文章目录
预览图
DispatcherServlet执行流程
图片链接
一、initStrategies初始化方法
项目启动时会先在initStrategies中初始化一些配置,图中标记了比较重要的几个初始化方法。
二、doDispatch调度方法
1.调度处理器映射器
getHandler方法内部
@Nullable
protected HandlerExecutionChain getHandler(HttpServletRequest request) throws Exception {
if (this.handlerMappings != null) {
// 循环查找可以处理的handlerMapping
for (HandlerMapping mapping : this.handlerMappings) {
// 返回HandlerExecutionChain
HandlerExecutionChain handler = mapping.getHandler(request);
if (handler != null) {
return handler;
}
}
}
return null;
}
HandlerExecutionChain
public class HandlerExecutionChain {
private static final Log logger = LogFactory.getLog(HandlerExecutionChain.class);
// 处理器
private final Object handler;
@Nullable
private HandlerInterceptor[] interceptors;
// 拦截器
@Nullable
private List<HandlerInterceptor> interceptorList;
private int interceptorIndex = -1;
HandlerExecutionChain 类
2.调度处理器适配器
获得处理器适配器
getHandlerAdapter方法内部
protected HandlerAdapter getHandlerAdapter(Object handler) throws ServletException {
if (