自定義struts2的過濾器,釋放不需要過濾的類


  我們知道,使用struts2的時候需要設置一些不需要它過濾的請求(諸如我們使用的一些插件需要原生態的servlet),遇到這種情況的解決辦法就是擴展struts的過濾器,下面請看web.xml的配置:

 <filter>
  <filter-name>struts2</filter-name>
        <!-- <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> -->
   <filter-class>com.hsc.util.UeditFilter</filter-class>
  <init-param>
   <param-name>config</param-name>
   <param-value>struts-default.xml,struts-plugin.xml,../struts.xml</param-value>
  </init-param>
 </filter>

注釋掉的部分就是原來struts2的過濾器,我們這里需要對它進行擴展,寫一個自己的過濾器。過濾器的內容如下

package com.hsc.util;

import java.io.IOException;

import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter;

public class UeditFilter extends StrutsPrepareAndExecuteFilter {
    public void doFilter(ServletRequest req, ServletResponse res,FilterChain chain) throws IOException, ServletException {
        HttpServletRequest request = (HttpServletRequest) req;
        //不過濾的url
        String url = request.getRequestURI();
        if (url.indexOf("/resource/ueditor/jsp/imageUp.jsp") >= 0||url.indexOf("/servlet/onLineTakePhotoServlet") >= 0) {
//            System.out.println("使用自定義的過濾器");
            chain.doFilter(req, res);
        }else{
//            System.out.println("使用默認的過濾器");
            super.doFilter(req, res, chain);
        }
    }
}

  由以上的代碼可以看出,自定義的過濾器繼承StrutsPrepareAndExecuteFilter 這個類,在過濾的邏輯中攔截url對不需要過濾的請求,這里的兩個例子為“/resource/ueditor/jsp/imageUp.jsp”和"/servlet/onLineTakePhotoServlet" ,當過濾器檢測到該Url的時候放行,否則繼續按照struts2的邏輯進行處理。這個小小的自定義過濾器雖然看上去十分簡單,但用氣來卻很方便,於是就在這里整理了。


免責聲明!

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



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