//过滤器类配制如下
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
public class CharacterEncodingFilter extends HttpServlet implements Filter { //解决struts中文编码的过滤器
private FilterConfig filterConfig;
protected String encoding; //编码
protected boolean enable; //是否起用此编码
//Handle the passed-in FilterConfig
//默认编码方式
public CharacterEncodingFilter() {
this.encoding = "UTF-8";
this.enable = false;
}
public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig = filterConfig;
loadConfigParams();
}
public void loadConfigParams() { //取得初始化参数
this.encoding = this.filterConfig.getInitParameter("encoding");
String enableStr = this.filterConfig.getInitParameter("enable");
if(enableStr.equals("true")) {
this.enable = true;
}
else {
this.enable = false;
}
}
//Process the request/response pair
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain filterChain) {
try {
if(enable) { //判断是否起用编码参数
request.setCharacterEncoding(encoding);
}
filterChain.doFilter(request, response);
//response.setCharacterEncoding(encoding);
} catch (ServletException sx) {
//filterConfig.getServletContext().log(sx.getMessage());
} catch (IOException iox) {
//filterConfig.getServletContext().log(iox.getMessage());
}
}
//Clean up resources
public void destroy() {
}
}
//在web.xml中添加
<filter>
<filter-name>characterencodingfilter</filter-name>
<filter-class>member.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>GB2312</param-value>
</init-param>
<init-param>
<param-name>enable</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>characterencodingfilter</filter-name>
<servlet-name>action</servlet-name>
</filter-mapping>