Tomcat8.x 解析出路由和Session后,执行Valve管道链

管道链


// 执行管道链条 connector.getService().getContainer().getPipeline().getFirst().invoke(request, response);
	    class org.apache.catalina.core.StandardEngineValve{
	    	 public final void invoke(org.apache.catalina.connector.Request request, Response response)
	    		        throws IOException, ServletException {
	    		 Host host = request.getHost();
	    		 //org.apache.catalina.core.StandardHostValve.invoke(..)
	    	     host.getPipeline().getFirst().invoke(request, response);
	    	 }
	     }
	     class org.apache.catalina.core.StandardHostValve{
	    	 public final void invoke(Request request, Response response)
	    		        throws IOException, ServletException {
	    		 Context context = request.getContext();
	    		 // org.apache.catalina.core.StandardContextValve.invoke(..)
                 context.getPipeline().getFirst().invoke(request, response); //!!!!
	    	 }
	     }
	     
	     class org.apache.catalina.core.StandardContextValve{
	    	 public final void invoke(Request request, Response response)
	    		        throws IOException, ServletException {

	    		    // Disallow any direct access to resources under WEB-INF or META-INF
    		        MessageBytes requestPathMB = request.getRequestPathMB();
    		        if ((requestPathMB.startsWithIgnoreCase("/META-INF/", 0))
    		                || (requestPathMB.equalsIgnoreCase("/META-INF"))
    		                || (requestPathMB.startsWithIgnoreCase("/WEB-INF/", 0))
    		                || (requestPathMB.equalsIgnoreCase("/WEB-INF"))) { // 访问被进制的目录
    		            response.sendError(HttpServletResponse.SC_NOT_FOUND);
    		            return;
    		        }
    		        Wrapper wrapper = request.getWrapper(); // Servlet对象
    		        response.sendAcknowledgement();
    		        // 执行Servlet请求 !!!!
    		        wrapper.getPipeline().getFirst().invoke(request, response);
	    	 }
	     }




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值