上次明白了springmvc的初始化流程,现在来看看springmvc如何具体处理一个请求。
当一个请求到达服务器后,会交给servlet,如果是交给了DispatchServlet,那么就会调到
##doService方法
这个方法主要是往request里设置一些属性。方便之后handler和view获取。
|
|
doDispatch方法
这里包含了完整的对这个请求的处理。
找到这个处理这个请求的handler
|
|
|
|
|
|
ok,通过上面的代码,我们知道了handlerMapping是如何产生的,以及如何根据request找到对应的HandlerExecutionChain。
该执行handler了
在执行前,spring将handler封装为一个HandlerAdapter。为什么要这么做呢?看看这个接口的定义
|
|
所以我们在doDispatch中看到了:
|
|
不过还有拦截器,如果设置了拦截器,那么我们应该先执行preHandler,在执行handler,再postHandler,最后在view渲染完后执行completionhandler。
|
|
|
|
|
|
ok支持整个request的流程就处理完了。