1

详细步骤:

1.用户向服务器发送请求,被Spring前端控制DispatcherServlet捕获,调用doService()方法
2.doService()方法调用doDispatcher()方法
3.遍历当前这个servlet所有注册的HandlerMapping,根据request获得此次请求的HandlerExecutionChain,如果没有找到,则返回404
4.遍历当前这个servlet所有注册的HandlerAdapter,根据当前这个HandlerExecutionChain找到合适的HandlerAdapter,如果没有,则抛出异常。
5.处理 header头里有last-modified的get方法
6.先获得该servlet对应的HandlerInterceptor,如果为空,则新建一个HandlerInterceptor数组。
7.遍历所有的HandlerInterceptor,当preHandle(拦截一个handler执行)返回false,则往回执行所有拦截器的afterCompletion,再退出拦截器链。(请求不继续往下传,直接沿着原来的链往回跑),直接返回空。
8.当preHandle全部返回true,顺序执行完所有拦截器。
9.HandlerAdapter开始调用handle方法处理当前request,返回一个ModelAndView
10.根据request设置默认的视图名称。
11.HandlerExecutionChain调用applyPostHandle()方法,逆序执行注册的拦截器
12.选择一个适合的ViewResolver结合Model和View渲染视图
13.渲染结果返回给客户端。


mousycoder
5.4k 声望819 粉丝