在web.xml中,拦截.jsp和.do结尾的路径
<!--设置请求编码过滤器-->
<filter>
<filter-name>EncodeFilter</filter-name>
<filter-class>
com.filter.ReqEncodeFilter
</filter-class>
<init-param>
<param-name>RequestEncode</param-name>
<param-value>GBK</param-value>
</init-param>
</filter>
<!--请求编码过滤器与网址映射-->
<filter-mapping>
<filter-name>EncodeFilter</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>EncodeFilter</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
后面是java代码
package com.filter;
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;
import javax.servlet.http.HttpServletResponse;
public class ReqEncodeFilter implements Filter {
private static String DEFAULT_ENCODE_NAME = "GBK";
//编码名
private String encodeName = null;
/**
* 初始化方法。获得请求编码名称。如果不配置,默认编码是GBK
*/
public void init(FilterConfig filterConfig) throws ServletException {
String param = filterConfig.getInitParameter("RequestEncode");
if (param != null) {
this.encodeName = param;
} else {
this.encodeName = DEFAULT_ENCODE_NAME;
}
}
/**
* 处理请求,给请求设置编码属性。
*/
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException,
ServletException {
HttpServletRequest request = (HttpServletRequest) req;
if (request.getHeader("X-Requested-With") != null && request.getHeader("X-Requested-With").equalsIgnoreCase("XMLHttpRequest")) {
request.setCharacterEncoding("utf-8");
} else {
req.setCharacterEncoding(this.encodeName);
}
chain.doFilter(req, res);
}
public void destroy() {
}
}