Spring MVC笔记
Spring MVC
Spring MVC是目前主流的实现MVC实际模式的企业级开发款框架,Spring框架的一个子模块,无需整合,开发起来更加便捷。
什么是MVC实际模式
将应用程序分为Controller、Modle、View三层,Controller接收客户端请求,调用Model生成业务数据,传递给View.
Spring MVC就是对这套流程的封装,屏蔽了很多底层代码,开发出接口,让开发者可以更加轻松、边界地完成基于MVC模式的Web开发。
Spring MVC的核心组件
- DispatcherServlet:前置控制器,是整个流程控制的核心,控制其他组件的执行,进行统一调度,降低组件之间的耦合度,相当于总指挥。
- Handler:处理器,完成具体的业务逻辑,相当于Servlet或Action。
- HandlerMapping: DispatcherServlet 接收到请求之后,通过HandlerMapping将不同的请求映射到不同的Handler。
- HandlerInterceptor: 处理器拦截器,是一个接口,如果需要完成一些拦截处理,那么可以实现该接口。
- HandlerExecutionChain: 处理器执行链,半酣两部分内同:Handler和HandlerInterceptor(系统会有一个默认的HandlerInterceptor,如果需要额外设置拦截,可以添加拦截器)。
- HandlerAdapter:处理器设配器,Handler执行业务方法之前,需要进行一系列的操作,包括表单数据的验证,数据类型的转换,将表单数据封装到JavaBean,这些操作都是由HandlerAdapter完成,开发者只需要将注意力集中在业务逻辑的处理上,DispatcherServlet通过HandlerAdapter执行不同的Handler。
- ModelAndView: 装在了模型数据和视图信息,作为Handler的处理结果,返回给DispatcherServlet。
- ViewResolver:视图解析器,DispatcherServlet通过它将逻辑视图解析为物理视图,最终将渲染结果响应给客户端。
Spring MVC的工作流程
- 客户端请求被DispatcherServlet接收
- 根据HandlerMapping映射到Handler
- 生成Handler和HandlerInterceptor
- Handler和HandlerInterceptor以HandlerExecutionChain的形式一并返回给DispatcherServlet
- DispatcherServlet通过HandlerAdapter调用Handler的方法完成业务逻辑处理
- Handler返回一个ModelAndView给DispatcherServlet
- DispatcherServlet将获取的ModelAndView对象传给ViewResolver视图解析器,讲逻辑视图解析为物理视图View。
- ViewResolver返回一个View给DispatcherServlet。
- DispatcherServlet根据View进行视图渲染(将模式数据Model填充到视图View中)
- DispatcherServlet将渲染后的结果响应给客户端。
Sping MVC流程非常复杂,实际开发中很简单,因为大部分组件不需要开发者创建,管理,只需要通过配置文件的方式完成配置即可,真正需要开发者进行处理的只有Handler、View。
如何使用?
创建Maven Project,pom.xml
1
2
3
4
5
6
7<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.0.8.RELEASE</version>
</dependency>
</dependencies>在web.xml中配置DispatcherServlet。
1 |
|
- springmvc.xml配置
1 |
|
- 创建Handler
1 |
|
Spring MVC 注解
- @RequestMapping
Spring MVC通过@RequestMapping注解将URL请求与业务方法进行映射,同时在Handler的类定义处以及方法定义处都可以添加@RequestMapping,在类定义处添加,相当于客户端多了一层访问路径。
- @Controller
@Controller在类定义处,将该类交给IoC容器来管理,同时使其成为一个控制器(结合springmvc.xml中的自动扫描开启),可以接收客户端请求。
@RequestMapping相关参数
- value:指定URL请求的实际地址,是@RequestMapping的默认值。
- method:指定请求的method类型,GET、POST、PUT、DELET
1
2
3
4
5@RequestMapping(value = "/index",method = RequestMethod.GET)
public String index() {
System.out.println("执行了index...");
return "index";
}上述代码表示index方法只能接收GET请求。
Spring MVC笔记
https://skynetboys.github.io/2020/02/08/Spring-MVC笔记/