我看到很多人在项目中使用了struts2,却又不得不配置servlet,比如第三方的插件 fckeditor,或者集成 webservice之类的
url配置完了却又被struts的过滤器拦截了其实这种情况很简单, 首先配置一个Filter,这个filter在struts的filter之前,然后拦截所有的请求,对url进行匹配,如果匹配到是要直接用servlet的,就直接转发,如果没有匹配到,那就继续下一个filter,这里分享下我写的代码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>
然后剩下的就是servlet的配置,原来怎么配置还是怎么配置