web應用怎么跳過某些Filter


在做的項目需要用到cas,而使用cas的話,需要在client的webapp的web.xml中配置好多個filter,但是需要兼容到老的邏輯,如果滿足某些條件,就不走cas的filter,滿足另外一些條件,只走cas的其中幾個filter,那該怎么進行filter的相關配置呢?

從網上搜到了一片blog:http://blog.csdn.net/tandaly/article/details/8687671,里面講述了兩種方式。

第一種是給filter設置標識。我目前考慮,在自己項目中采取這種為filter加標識的方式:

publicclass FirstFilter implementsFilter {  
    //...  
   
    publicvoid doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain)throwsIOException, ServletException {  
        servletRequest.setAttribute("executeSecondFilter",true);  
        //...  
        if(someReason)  
            servletRequest.setAttribute("executeSecondFilter",false); 
       servletRequest.setAttribute("executeThirdFilter",false);
       servletRequest.setAttribute("executeForthFilter",true); filterChain.doFilter(servletRequest, servletResponse); } } publicclass SecondFilter implementsFilter {
//.. publicvoid doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain)throwsIOException, ServletException { if(servletRequest.getAttribute("executeSecondFilter") == null|| !((Boolean) servletRequest.getAttribute("executeSecondFilter"))) { filterChain.doFilter(servletRequest, servletResponse); } //... } }
publicclass ThirdFilter implementsFilter {  
    //..  
 publicvoid doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain)throwsIOException, ServletException { if(servletRequest.getAttribute("executeThirdFilter") == null|| !((Boolean) servletRequest.getAttribute("executeThirdFilter"))) { filterChain.doFilter(servletRequest, servletResponse); } //...  } }
 

filterChain.doFilter()的作用是跳轉到filter鏈的下一個filter。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM