Spring MVC执行流程:
- 用户向服务器发送请求,请求被前端控制器DispatcherServlet捕获。
- DispatcherServlet对请求解析,判断请求url对应的映射
(1)不存在
①判断是否配置mvc:default-servlet-handler
没有:404;有:访问目标资源;
(2)存在
根据url,调用HandlerMapping获取Handler配置相关的控制器方法,拦截器集合,拦截器索引,最后以HandlerExcecutionChain执行链形式返回给DispatcherServlet。
- DispatcherServlet根据获得的Handler,调用合适的HandlerAdapter(处理器适配器)
- HandlerAdapter执行拦截器的preHandler方法
- 提取Request中的数据,填充到Handler形参中,执行Handler/controller方法处理请求
- Handler执行完后,向DispaterServlet返回ModelAndView对象
- 执行拦截器的postHandler方法
- DispatcherServlet根据返回的ModelAndView选择合适的ViewResolver(视图解析器)进行视图解析,渲染视图。
- 执行拦截器的afterCompletion方法
- 最后DispatcherServlet将渲染结果返回客户端,响应用户.