一. SpringMVC执行流程
由图可知,SpringMVC执行流程可以这样分析:
- 前端发送请求到DispatcherServlet(前端控制器)
- 前端控制器判断是否有对应的映射存在,如果不存在,则会在SpringMVC上下文寻找是否配置mvc:default-servlet-handler,如果没配置,则出现404错误,如果配置了,就去获取目标资源,如果目标资源不存在,则出现404错误。
- 如果存在请求相对应的映射,前端控制器DispatcherServlet将调用处理器适配器HandlerMapping获得HandlerExecutionChain对象,生成处理器对象及处理器拦截器(如果有,再一起返回给DispatcherServlet)。
- DispatchServlet调用HandlerAdapter
- 调用拦截器preHandle方法
- 调用目标方法返回ModelAndView
- 调用拦截器postHandler方法
- 判断是否存在异常
- 如果存在异常,ExceptionHandlerExceptionResolver解析异常得到新的ModelAndView,再由视图解析器解析视图;如果不存在异常,直接调用视图解析器解析要返回的视图
- 渲染视图
- 调用视图拦截器的afterCompletion方法
小结
通过观察整个SpringMVC的执行过程,可以发现都是由之前学习过的小知识点一个一个拼凑起来的(具体可以去看我之前的博客)