Spring-----MVC配置和基本原理

Java web的发展历史

Model I开发模式和Model I开发模式

1.Model I开发模式

Model1的开发模式是:JSP+JavaBean的模式,它的核心是Jsp页面,在这个页面中,Jsp页面负责++整合页面和JavaBean(业务逻辑)++,而且渲染页面,它的基本流程如下:

什么是JSP页面?

JSP页面是把当前所有的前端后端和数据库都写在同一个页面上,也就是把 html\css\js\java\sql语句等都写在jsp页面中

这样的设计模式到这一个js页面负责了视图的展示和业务流程的控制高度耦合的结果是++Jsp代码十分复杂,后期维护困难++

2.Model Il开发模式

在Model II的模式下,利用jsp页面、servlet和JavaBean 组件分工协作共同完成系统的所有任务,其中jsp负责数据显示逻辑任务,servlet负责程序的流程控制任务,JavaBean负责处理业务逻辑任务。但是后来jsp被替换成了html,它的基本流程如下:

Model2:相对于Model1来说,职责分工更为明确,在Model1的基础上,抽取了Servlet层,体现了一个分层的思想,适合大型的项目开发

MVC模式

Spring mvc是基于Spring的一个模块,专门做web开发,可以理解为是Servlet的升级

在Spring MVC框架当中,Controller替代Servlet担负控制器的职能

M: 指model, ++模型层++,指工程当中的Java Bean,作用是处理数据

Java Bean分两类:

  • 一类是实体类Bean:专门存储业务数据的
  • 一类为业务处理Bean:指Servlet或Dao对象,专门处理业务逻辑和数据

V: View, ++视图层++指项目当中的html或jsp等页面,作用是与用户进程交互,展示数据

c: Contoller, ++控制层++,指工程当中的servlet,.作用是接受请求和响应数据

MVC思想不是那个语言所特有的设计模式,也不是wb应用所特有的思想,而是一种规范。MVC思想将一个应用分成三个基本部分:Model(模型)、View(视图)和Controller(控制器),这三个部分以最少的耦合协同工作,从而++提高了应用的可扩展性和可维护性++。他们三者的关系如下图所示

++++

注意:打包方式创建为war包

MVC配置过程

1、创建项目并命名

2、配置导入

将以下代码导入到pom.xml文件中

XML 复制代码
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>8</maven.compiler.source>
    <maven.compiler.target>8</maven.compiler.target>
    <spring.version>5.0.2.RELEASE</spring.version>
  </properties>

  <dependencies>

    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.9.0</version>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-core</artifactId>
      <version>2.9.0</version>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-annotations</artifactId>
      <version>2.9.0</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-web</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <!--SpringMVC-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <!--servlet API-->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>servlet-api</artifactId>
      <version>2.5</version>
      <scope>provided</scope>
    </dependency>

    <dependency>
      <groupId>javax.servlet.jsp</groupId>
      <artifactId>jsp-api</artifactId>
      <version>2.0</version>
      <scope>provided</scope>
    </dependency>

    <!--日志-->
    <dependency>
      <groupId>ch.qos.logback</groupId>
      <artifactId>logback-classic</artifactId>
      <version>1.2.3</version>
    </dependency>

    <dependency>
      <groupId>org.thymeleaf</groupId>
      <artifactId>thymeleaf-spring4</artifactId>
      <version>3.0.9.RELEASE</version>
    </dependency>

  </dependencies>

在web.xml中配置内容

XML 复制代码
  <!--在web.xml中配置Spring提供的过滤器类 -->
  <filter>
    <filter-name>encodingFilter</filter-name>
    <filter-class>
       org.springframework.web.filter.CharacterEncodingFilter
    </filter-class>
    <async-supported>true</async-supported>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>UTF-8</param-value>
    </init-param>
  </filter>

  <filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

  <!--不拦截所有是html的页面请求-->
  <servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.html</url-pattern>
  </servlet-mapping>

  <!--配置前端控制器,对浏览器发送的请求进行统一处理-->
  <servlet>
    <servlet-name>dispatcherServlet</servlet-name>
    <servlet-class>
       org.springframework.web.servlet.DispatcherServlet
    </servlet-class>
    <!--加载springmvc.xml配置文件的位置和名称,配置的是Spring配置-->
    <init-param>
      <!--contextConfigLocation:上下文配置路径,固定值-->
      <param-name>contextConfigLocation</param-name>
      <!--classpath:类路径,值得是Java和resources文件夹-->
      <!--springmvc.xml:指的是配置文件的名称:需要配置springmvc.xml,在下面-->
      <param-value>classpath:springmvc.xml</param-value>
    </init-param>
    <!--配置启动加载-->
    <load-on-startup>1</load-on-startup>
  </servlet>

  <servlet-mapping>
    <servlet-name>dispatcherServlet</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

  <!--开启项目时打开的页面-->
  <welcome-file-list>
    <welcome-file>/index.html</welcome-file>
  </welcome-file-list>

3、在main下建立java和resource目录,并在resource下建立xml文件

并在其文件中配置

XML 复制代码
<!--配置spring创建容器时要扫描的包-->
<context:component-scan base-package="com.qcby"></context:component-scan>

<!--处理映射器-->
<bean 
class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>

<!--处理器适配器-->
<bean 
class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>

<!--配置视图解析器-->
<bean id="viewResolver" 
class="org.thymeleaf.spring4.view.ThymeleafViewResolver">
   <property name="order" value="1"/>
   <property name="characterEncoding" value="UTF-8"/>
   <property name="templateEngine" ref="templateEngine"/>
</bean>
<!-- templateEngine -->
<bean id="templateEngine" 
class="org.thymeleaf.spring4.SpringTemplateEngine">
   <property name="templateResolver" ref="templateResolver"/>
</bean>
<bean id="templateResolver"
class="org.thymeleaf.spring4.templateresolver.SpringResourceTemplateResolver">
   <property name="prefix" value="/html/" />
   <property name="suffix" value=".html" />
   <property name="templateMode" value="HTML5"/>
</bean>
<!-- JSON View -->
<bean
    class="org.springframework.web.servlet.view.json.MappingJackson2JsonView">
</bean>
<!-- 配置spring开启注解mvc的支持  默认就是开启的 ,
要想让其他组件(不包含映射器、适配器、处理器)生效就必须需要配置了-->
<mvc:annotation-driven></mvc:annotation-driven>

4、在webapp下可建立html文件布置前端页面

5、在java下可建立java类文件与html文件关联

如:建立文件index.html和HelloController

6、创建命名空间(springmvc.xml)

7、添加tomcat

点击"运行"并选择"编辑配置"在其中选择 本地tomcat服务器

相关推荐
不知道叫什么呀17 分钟前
【C】vector和array的区别
java·c语言·开发语言·aigc
王柏龙37 分钟前
aspnetcore Mvc配置选项中的ModelMetadataDetailsProviders
mvc·.netcore
wan_da_ren1 小时前
JVM监控及诊断工具-GUI篇
java·开发语言·jvm·后端
cui_hao_nan1 小时前
JAVA并发——什么是Java的原子性、可见性和有序性
java·开发语言
best_virtuoso1 小时前
JAVA JVM垃圾收集
java·开发语言·jvm
lifallen1 小时前
Kafka 时间轮深度解析:如何O(1)处理定时任务
java·数据结构·分布式·后端·算法·kafka
顾林海1 小时前
Android 性能优化:启动优化全解析
android·java·面试·性能优化·zygote
risc1234563 小时前
BKD 树(Block KD-Tree)Lucene
java·数据结构·lucene
kk_stoper3 小时前
如何通过API查询实时能源期货价格
java·开发语言·javascript·数据结构·python·能源
CZZDg3 小时前
Redis Sentinel哨兵集群
java·网络·数据库