springmvc请求流程:
1、用户发送请求至前端控制器DispatcherServlet
2、DispatcherServlet收到请求调用HandlerMapping处理器映射器。
3、处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。
4、DispatcherServlet通过HandlerAdapter处理器适配器调用处理器
5、执行处理器(Controller,也叫后端控制器)。
6、Controller执行完成返回ModelAndView
7、HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet
8、DispatcherServlet将ModelAndView传给ViewReslover视图解析器
9、ViewReslover解析后返回具体View
10、DispatcherServlet对View进行渲染视图(即将模型数据填充至视图中)。
11、DispatcherServlet响应用户
preHandle
- 调用时间:Controller方法处理之前
- 执行顺序:链式Intercepter情况下,Intercepter按照声明的顺序一个接一个执行
- 若返回false,则中断执行,注意:不会进入afterCompletion
postHandle
- 调用前提:preHandle返回true
- 调用时间:Controller方法处理完之后,DispatcherServlet进行视图的渲染之前,也就是说在这个方法中你可以对ModelAndView进行操作
- 执行顺序:链式Intercepter情况下,Intercepter按照声明的顺序倒着执行。
- 备注:postHandle虽然post打头,但post、get方法都能处理
afterCompletion
- 调用前提:preHandle返回true
- 调用时间:DispatcherServlet进行视图的渲染之后
- 多用于清理资源