67,515
社区成员
发帖
与我相关
我的任务
分享
package com.ocr.filter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
public class ServletFilter implements Filter {
private List<String> urls;
public void destroy() {
}
public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) arg0;
String returnUrl = request.getRequestURI().replaceAll(request.getContextPath(), "");
String query = request.getQueryString();
for(String url : urls) {
if (returnUrl.startsWith(url)) {
if(query != null && !query.equals("")) {
returnUrl = returnUrl + "?" + query;
}
RequestDispatcher dispatcher = request.getRequestDispatcher(returnUrl);
dispatcher.forward(arg0, arg1);
return;
}
}
chain.doFilter(arg0, arg1);
}
public void init(FilterConfig config) throws ServletException {
String url = config.getInitParameter("urls");
String[] strs = url.split(",");
urls = new ArrayList<String>();
for(String str:strs) {
urls.add(str);
}
}
}
<filter>
<filter-name>servletFilter</filter-name>
<filter-class>com.ocr.filter.ServletFilter</filter-class>
<init-param>
<param-name>urls</param-name>
<param-value><!-- 这里面配置你要使用servlet的url,中间用英文半角逗号隔开 --></init-param>
</filter>
<filter-mapping>
<filter-name>servletFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>