Struts2中的过滤器使用的是org.apache.struts2.dispatcher.FilterDispatcher,由于Servlet处理上传问题采用的是Servlet,而Struts2中配置的Filter会把所有的请求过滤掉,FCKEditor就接收不到请求!试着自定义过滤器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.FilterDispatcher;/**
* 功能描述:自定义过滤器,实现Struts2和FCKEditor的整合
* 由于Struts2的过滤器会将FCKEditor上传操作的请求过滤,自定义过滤器解决,如果是FCKEditor文件上传操作则不进行过滤
*
* @author lilei
* @date 2011-06-28
* @version 1.0
*
*/
public class FCKEditorFilter extends FilterDispatcher { 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 > 1) {
chain.doFilter(req, res);
}else {
super.doFilter(req, res, chain);
}
}
}可是FCKEditor的请求是没被Struts2接管,但是也没被FCKEditor接管,,求解中、、、
注:使用的是Struts2.0.6,使用的过滤器是FilterDispatcher
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;import org.apache.struts2.dispatcher.FilterDispatcher;/**
* 功能描述:自定义过滤器,实现Struts2和FCKEditor的整合
* 由于Struts2的过滤器会将FCKEditor上传操作的请求过滤,自定义过滤器解决,如果是FCKEditor文件上传操作则不进行过滤
*
* @author lilei
* @date 2011-06-28
* @version 1.0
*
*/
public class FCKEditorFilter extends FilterDispatcher { 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 > 1) {
chain.doFilter(req, res);
}else {
super.doFilter(req, res, chain);
}
}
}可是FCKEditor的请求是没被Struts2接管,但是也没被FCKEditor接管,,求解中、、、
注:使用的是Struts2.0.6,使用的过滤器是FilterDispatcher
package com.saye.cmmb.action.maintain;import java.io.IOException;import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;/**
* 功能描述:自定义过滤器,实现Struts2和FCKEditor的整合
* 由于Struts2的过滤器会将FCKEditor上传操作的请求过滤,自定义过滤器解决,如果是FCKEditor文件上传操作则不进行过滤
*
* @author lilei
* @date 2011-06-28
* @version 1.0
*
*/
public class FCKEditorFilter implements Filter {
private String DispatcherUrl; public void doFilter(ServletRequest req,ServletResponse res,FilterChain chain)throws IOException,ServletException{
HttpServletRequest request = (HttpServletRequest) req;
if(request.getCharacterEncoding() == null || "".equals(request.getCharacterEncoding())) {
request.setCharacterEncoding("utf-8");
}
String URI = request.getRequestURI();
String[] uriArray = URI.split("/fckeditor/editor/filemanager/connectors/");
int arrayLen = uriArray.length;
if (arrayLen > 1) {
request.getRequestDispatcher(DispatcherUrl).forward(req, res);
}else {
chain.doFilter(req, res);
}
} public void destroy() {
} public void init(FilterConfig filterConfig) throws ServletException {
DispatcherUrl = filterConfig.getInitParameter("DispatcherUrl");
}
}
<constxxx name="struts2.xxxxxxxxxx" value=".do"/>在这里也要配置。