1 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>StandardWrapperValve--->Servlet>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
2 请求转出,都由valve来调用servlet的service方法
3 [1] 直接转出
4 StandardWrapperValve
5 void java.org.apache.catalina.core.StandardWrapperValve.invoke(Request request, Response response) throws IOException, ServletException
6 --->filterChain.doFilter
7 ------------>servlet.service(request, response);
8
9 [2] 内部循环再转出
10 -------->((AsyncContextImpl)request.getAsyncContext()).doInternalDispatch();
11 ----> void java.org.apache.catalina.core.AsyncContextImpl.doInternalDispatch() throws ServletException, IOException
12 ---->
13 Runnable runnable = dispatch;
14 dispatch = null;
15 runnable.run();
16
17 ------------->
18 void java.org.apache.catalina.core.AsyncContextImpl.dispatch(ServletContext context, String path)
19 ---->applicationDispatcher.dispatch(servletRequest, servletResponse);
20
21
22 AsyncDispatcher=applicationDispatcher
23
24 final class ApplicationDispatcher implements AsyncDispatcher, RequestDispatcher
25
26 ------>final class ApplicationDispatcher implements AsyncDispatcher, RequestDispatcher
27 ---------> void java.org.apache.catalina.core.ApplicationDispatcher.doDispatch(ServletRequest request, ServletResponse response) throws ServletException, IOException
28 -------------> void java.org.apache.catalina.core.ApplicationDispatcher.doDispatch(ServletRequest request, ServletResponse response) throws ServletException, IOException
29 //Servlet Service Method is called by the FilterChain
30 ----------->void java.org.apache.catalina.core.ApplicationFilterChain.doFilter(ServletRequest request, ServletResponse response) throws IOException, ServletException
31 --> void java.org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ServletRequest request, ServletResponse response) throws IOException, ServletException
32 ------------>servlet.service(request, response);
33 最终都是由servlet.service(request, response);
34 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>StandardWrapperValve--->Servlet>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
35
36