一、什么是MVC

MVC是一种软件架构思想,将软件按照模型,视图,控制器划分

  1. M:Model,模型层,指工程中的JavaBean,作用是处理数据,JavaBean分为两类
    (1)一类为实体类Bean:用于存储业务数据
    (2)一类为业务处理Bean:指Service和Dao对象,用于处理业务逻辑和数据访问
  2. V:View,视图层,指工程中的html和jsp,用于展示数据
  3. C:Controller,控制层,用于接受请求和响应浏览器

二、SpringMVC特点

  1. 与IOC容器等基础设施无缝对接
  2. 基于原生Servlet,通过DispatcherServlet对请求和响应进行统一管理
  3. 代码简洁,提升开发效率
  4. 内部组件化程度高,即插即用

三、配置xml

  1. 默认配置方式
    (1)此配置下,springMVC的配置文件默认位于WEB-INF下,名称为-servlet.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <!-- 配置前端控制器,对浏览器发送的请求进行统一处理 -->
    <servlet>
        <servlet-name>SpringMVC</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>SpringMVC</servlet-name>
        <!--
        设置前端控制器的请求路径
        /表示处理所有请求路径,但是不包含以.jsp结尾的请求
        -->
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>

(2)扩展配置方式
(1)通过init-param标签配置springMVC配置文件位置和名称,通过load-on-startup标签配置DispatcherServlet前端控制器初始化时间

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <!-- 配置前端控制器,对浏览器发送的请求进行统一处理 -->
    <servlet>
        <servlet-name>SpringMVC</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <!--
            通过初始化参数配置springMVC配置文件位置和名称
            -->
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springMVC.xml</param-value>
        </init-param>
        <!-- 服务启动时初始化前端控制器DispatcherServlet -->
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>SpringMVC</servlet-name>
        <!--
        设置前端控制器的请求路径
        /表示处理所有请求路径,但是不包含以.jsp结尾的请求
        -->
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>

四、总结

  1. 用户发送请求到前端控制器DispatcherServlet
  2. DispatcherServlet收到请求调用处理映射器HandlerMapping,处理映射器根据请求url找到具体的Handler处理器,返回给DispatcherServlet
  3. DispatcherServlet根据处理器Handler获取对应的适配器HandlerAdapter
  4. HandlerAdapter适配器调用处理器Handler
  5. 处理器Handler(Controller)执行完成后返回ModelAndView
  6. HandlerAdapter返回ModelAndView给前端控制器DispatcherServlet
  7. DispatcherServlet统一将返回的ModelAndView派送到ViewResolve(视图解析器)解析
  8. ViewResolve视图解析器解析之后返回View
  9. 对View进行渲染
  10. 响应用户