一、什么是MVC
MVC是一种软件架构思想,将软件按照模型,视图,控制器划分
- M:Model,模型层,指工程中的JavaBean,作用是处理数据,JavaBean分为两类
(1)一类为实体类Bean:用于存储业务数据
(2)一类为业务处理Bean:指Service和Dao对象,用于处理业务逻辑和数据访问 - V:View,视图层,指工程中的html和jsp,用于展示数据
- C:Controller,控制层,用于接受请求和响应浏览器
二、SpringMVC特点
- 与IOC容器等基础设施无缝对接
- 基于原生Servlet,通过DispatcherServlet对请求和响应进行统一管理
- 代码简洁,提升开发效率
- 内部组件化程度高,即插即用
三、配置xml
- 默认配置方式
(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>
四、总结
- 用户发送请求到前端控制器DispatcherServlet
- DispatcherServlet收到请求调用处理映射器HandlerMapping,处理映射器根据请求url找到具体的Handler处理器,返回给DispatcherServlet
- DispatcherServlet根据处理器Handler获取对应的适配器HandlerAdapter
- HandlerAdapter适配器调用处理器Handler
- 处理器Handler(Controller)执行完成后返回ModelAndView
- HandlerAdapter返回ModelAndView给前端控制器DispatcherServlet
- DispatcherServlet统一将返回的ModelAndView派送到ViewResolve(视图解析器)解析
- ViewResolve视图解析器解析之后返回View
- 对View进行渲染
- 响应用户