![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/6b1a82e0deba155583d3c7e953215a60.png)
第一步:
- 用户GET 请求—> 调用 Servlet 的 service() 方法, 而抽象类型 javax.servlet.http.HttpServlet 实现了 service() 方法
- HttpServlet 的 service() 做了请求类型分发, 调用 doGet 方法
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/9d44e3e3fcc1f3a644a6590daea5b41d.png)
第二步:
- org.springframework.web.servlet.FrameworkServlet 抽象类 重写了 HttpServlet 的 doGet 方法,没有调用父的 doGet 方法,所以程序跑到了 FrameworkServlet 的 doGet 方法里
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/bae03de16ca4bf55618c9c4daee8ae69.png)
第三步:调用 processRequest 方法
protected final void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
long startTime = System.currentTimeMillis();
Throwable failureCause = null;
LocaleContext previousLocaleContext = LocaleContextHolder.getLocaleContext();
LocaleContext localeContext = buildLocaleContext(request);
RequestAttributes previousAttributes = RequestContextHolder.getRequestAttributes();
ServletRequestAttributes requestAttributes = buildRequestAttributes(request, response, previousAttributes);
WebAsyncManager asyncManager = WebAsyncUtils.getAsyncManager(request);
asyncManager.registerCallableInterceptor(FrameworkServlet.class.getName(), new RequestBindingInterceptor());
initContextHolders(request, localeContext, requestAttributes);
try {
doService(request, response);
} catch (ServletException | IOException ex) {
failureCause = ex;
throw ex;
} catch (Throwable ex) {
failureCause = ex;
throw new NestedServletException("Request processing failed", ex);
} finally {
resetContextHolders(request, previousLocaleContext, previousAttributes);
if (requestAttributes != null) {
requestAttributes.requestCompleted();
}
logResult(request, response, failureCause, asyncManager);
publishRequestHandledEvent(request, response, startTime, failureCause);
}
}
第三步: 调用 doService(request, response) 方法
- 在FrameworkServlet 抽象类型下 doService 方法是抽象方法,所以我们要找它实现类
- DispatcherServlet 类 doService 方法
哈哈 ^ _ ^ 到这里就是我们配置 web.xml 文件 DispatcherServlet 类 , 进入了spring mvc 的世界了