概述
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):负责处理用户请求并构建适当的模型,并将其传递给视图进行渲染。
mvc 的框架有很多,比较有名的有:
Struts1.x
Struts2.x – 以前很流行
Spring MVC – 现在很流行, 得益于SPRING框架的技术生态
…
Spring MVC是一款非常优秀的MVC框架,它提供如下功能:
有一个非常强大的前置控制器,本质上是一个 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框架会把方法的返回值当做响应体的内容,响应给客户端。
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 应用程序所需的一些额外功能。