struts2链接过滤器冲突的解决方案

2014-11-24 08:59:10 · 作者: · 浏览: 0
1.修改web.xml文件。
struts2
*.action
只让过滤器对加有.action后缀的路径有效。
2.自定义一个继承StrutsPrepareAndExecuteFilter的过滤器,将配置换成自己自定义的过滤器。(如果大项目改.action不实际,推荐此法)
对于链接多个文件(如:fckeditor和struts2的结合)
package com.olympus.sapg.smtinnovation.util.method;    
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 FCKFilter extends StrutsPrepareAndExecuteFilter   
{       
     public void doFilter(ServletRequest req,ServletResponse res, FilterChain chain) throws IOException, ServletException {             
        HttpServletRequest request = (HttpServletRequest) req;            
        String URI = request.getRequestURI();           
        String[] uriArray = URI.split("/fckeditor/editor/filemanager/connectors/");           
        int arrayLen = uriArray.length;           
        if (arrayLen >= 2) {               
            chain.doFilter(req, res);            
            }else{               
                super.doFilter(req, res, chain);            
                }      
        }    
}   

单个链接的过滤器:
public class ExtendStrutsFilter extends StrutsPrepareAndExecuteFilter {     
         
    @Override    
    public void doFilter(ServletRequest req, ServletResponse res,FilterChain chain) throws IOException, ServletException {     
        HttpServletRequest request = (HttpServletRequest) req;     
        //不过滤的url,可以自行添加     
        if ("/demo/fileupload".equals(request.getRequestURI())) {     
            //System.out.println("使用自定义的过滤器");     
            chain.doFilter(req, res);     
        }else{     
            //System.out.println("使用默认的过滤器");     
            super.doFilter(req, res, chain);     
        }     
    }     
}    

web.xml文件:
    
        struts2    
                    
            
            com.filter.ExtendStrutsFilter     
            
    
    
        struts2    
        /*