👾 Spring MVC
2022年6月20日
- frame
👾 Spring MVC
1. 流程图
说明
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 通过它将逻辑视图解析为物理视图,最终将渲染结果响应给客户端
2. SpringMVC Restful 接口流程
- 目前基本都是前后端分离接口,ModelAndView 基本不会使用
- Restful 接口响应格式为
json
,与之对应的注解为@ResponseBody
- 区别在于,返回的
ModelAndView
恒为null
,通过Controller
返回的是 json 类型的HttpServletResponse
,也无需进行视图的解析 & 渲染
3. 过滤器 VS 拦截器
1) 从属关系
2) 执行顺序
3) 应用场景
Filter
- 身份验证过滤器
- 日志和审计过滤器
- 图像转换滤镜
- 数据压缩过滤器
- 加密过滤器
- 标记过滤器
- 触发资源访问事件的过滤器
- XSL/T 过滤器
- Mime 型链式过滤器
HandlerInterceptor
- 它的主要目的是允许分解重复的处理程序代码
- 授权检查,
- 或常见的处理程序行为,如语言环境或主题更改。