struts2链接过滤器冲突的解决方案
1.修改web.xml文件。
<filter-mapping>
<filter-name>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); } } }
<filter> <filter-name>struts2</filter-name> <!-- 改为自己的过滤器 --> <filter-class> com.filter.ExtendStrutsFilter </filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>