SpringMVC的DispatcherServlet是负责将请求分发,所有的请求都有经过它来统一分发。其中有一个核心的方法就是doDispatch
,了解这个方法的逻辑,对了解mvc的调用流程很有帮助。下面简单的分析一下该方法。
1、源码
下面给出了源码,其实抓住主干部分,下面注释中的7个重要部分,就知道大概的脉络了。
protected void doDispatch(HttpServletRequest request, HttpServletResponse response) throws Exception {
HttpServletRequest processedRequest = request;
HandlerExecutionChain mappedHandler = null;
boolean multipartRequestParsed = false;
WebAsyncManager asyncManager = WebAsyncUtils.getAsyncManager(request);
try {
ModelAndView mv = null;
Exception dispatchException = null;
try {
processedRequest = checkMultipart(request);
multipartRequestParsed = (processedRequest != request);
// 步骤1,获取执行链,重要重要重要重要重要重要重要重要重要
mappedHandler = getHandler(processedRequest);
if (mappedHandler == null) {
noHandlerFound(processedRequest