Tomcat8.x Servlet的创建和调用


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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值