Tomcat8.x Servlet的创建和调用

来源:互联网 发布:php开发的主要工作是 编辑:程序博客网 时间:2024/05/18 13:12


Servlet的创建和调用


// Servlet的创建和执行class  org.apache.catalina.connector.CoyoteAdapter{public void service(org.apache.coyote.Request req,                    org.apache.coyote.Response res)                    throws Exception {connector.getService().getContainer().getPipeline().getFirst().invoke(request, response);//!!!!!! 管道机制}}class org.apache.catalina.core.StandardWrapperValve{public final void invoke(Request request, Response response)        throws IOException, ServletException {StandardWrapper wrapper = (StandardWrapper) getContainer();//!!!!!!!!!            // !!!!! 加载Servlet类,创建Servlet对象,反射Servlet对象内部的注解,如:@Resource声明的资源,并进行依赖注入到Servlet对象中!!!                // !!!!! 调用Servlet对象的init方法                servlet = wrapper.allocate();                               // !!! 创建过滤器链条                // Create the filter chain for this request                ApplicationFilterChain filterChain =                        ApplicationFilterFactory.createFilterChain(request, wrapper, servlet);                                // 执行过滤器链!!!! ,Servlet在过滤器链条的末端,过滤器执行后,就调用servlet.service(....)                filterChain.doFilter                    (request.getRequest(), response.getResponse());                                filterChain.release(); // 释放滤器链资源                wrapper.deallocate(servlet); // 释放Servlet资源                                if ((servlet != null) &&                    (wrapper.getAvailable() == Long.MAX_VALUE)) { // 释放StandardWrapper对象                    wrapper.unload();                }}}




0 0