Spring MVC工作流程图
概述
Spring MVC 也叫 Spring Web MVC ,属于展示层框架。SpringMVC 是 Spring 框架的一部分。
Spring Web MVC 框架提供了 MVC (模型 - 视图 - 控制器) 架构和用于开发灵活和松散耦合的 Web 应用程序的组件。 MVC 模式导致应用程序的不同方面(输入逻辑,业务逻辑和 UI 逻辑)分离,同时提供这些元素之间的松散耦合。
- 模型 (Model):封装了应用程序数据,通常指的数据层【DAO+entity】。
- 视图 (View):负责渲染模型数据,一般来说它生成客户端浏览器可以解释 HTML 输出,例【html/css/js, JSP, Thymeleaf, Velocity, FreeMarker】。
- 控制器 (Controller):负责处理用户请求并构建适当的模型,并将其传递给视图进行渲染。
-
Struts1.x
-
Struts2.x -- 以前很流行
-
Spring MVC -- 现在很流行, 得益于SPRING框架的技术生态
-
...
-
-
有一个非常强大的前置控制器,本质上是一个 Servlet
-
有强大的配置能力,包含请求到控制器的映射
-
提供了很多辅助性的功能,比如:
-
模型和视图 的封装
-
Bean Validation
-
文件上传和下载
-
对json的支持
-
自动封装请求参数,并转换成你想的任何对象,直接以参数传递进来。
-
提供编码过滤器
-
-
Spring MVC框架的搭建
-
准备一个基于maven的web项目结构
-
加入SpringMVC 相关的依赖【spring-webmvc】
-
在
web.xml
中添加 SpringMVC的配置 -
如果采用注解配置的话,需要添加一个 WebMvcConfig.java
-
添加控制器,写一个JAVA类,打上
@Controller
注解,并且在方法上面添加@RequestMapping
-
默认情况下,控制器方法的返回值被会SPRING MVC解析成 jsp 的名字,如果添加了
@ResponseBody
的话,则SPRING MVC框架会把方法的返回值当做响应体的内容,响应给客户端。
DispatcherServlet 组件类
Spring Web MVC 框架是围绕 DispatcherServlet 设计的,它处理所有的 HTTP 请求和响应。
Spring Web MVC DispatcherServlet 的请求处理工作流如下图所示:
以下是对应于到 DispatcherServlet 的传入 HTTP 请求的事件顺序:
- 在接收到 HTTP 请求后,DispatcherServlet 会查询 HandlerMapping 以调用相应的 Controller。
- Controller 接受请求并根据使用的 GET 或 POST 方法调用相应的服务方法。 服务方法将基于定义的业务逻辑设置模型数据,并将视图名称返回给 DispatcherServlet。
- DispatcherServlet 将从 ViewResolver 获取请求的定义视图。
- 当视图完成,DispatcherServlet 将模型数据传递到最终的视图,并在浏览器上呈现。
所有上述组件,即: HandlerMapping,Controller 和 ViewResolver 是 WebApplicationContext 的一部分,它是普通 ApplicationContext 的扩展,带有 Web 应用程序所需的一些额外功能。