67,513
社区成员
发帖
与我相关
我的任务
分享
//设置编码
request.setCharacterEncoding("GBK");
response.setCharacterEncoding("GBK");
response.setContentType("text/html");
public class CodeFilter
implements Filter
{
private static final String DEFAULT_ENCODING = "GBK";
private static final String ajaxEncoding = "UTF-8";
protected String commonEncoding;
protected FilterConfig filterConfig;
protected boolean ignore;
public CodeFilter()
{
ignore = true;
}
public void init(FilterConfig filterConfig)
throws ServletException
{
this.filterConfig = filterConfig;
commonEncoding = filterConfig.getInitParameter("encoding");
if (commonEncoding == null)
commonEncoding = "GBK";
String value = filterConfig.getInitParameter("ignore");
if (value == null)
ignore = true;
else
if (value.equalsIgnoreCase("true"))
ignore = true;
else
if (value.equalsIgnoreCase("yes"))
ignore = true;
else
ignore = false;
}
public void doFilter(ServletRequest req, ServletResponse res, FilterChain filterChain)
{
try
{
HttpServletRequest request = (HttpServletRequest)req;
HttpServletResponse response = (HttpServletResponse)res;
if (ignore || request.getCharacterEncoding() == null)
if (request.getHeader("RequestType") != null && request.getHeader("RequestType").equalsIgnoreCase("ajax"))
{
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
} else
if (request.getHeader("X-Requested-With") != null && request.getHeader("X-Requested-With").equalsIgnoreCase("XMLHttpRequest"))
{
if (request.getHeader("content-type") != null && request.getHeader("content-type") != "")
request.setCharacterEncoding("UTF-8");
response.setContentType((new StringBuilder("text/html;charset=")).append(commonEncoding).toString());
} else
{
request.setCharacterEncoding(commonEncoding);
response.setCharacterEncoding(commonEncoding);
response.setContentType((new StringBuilder("text/html;charset=")).append(commonEncoding).toString());
}
filterChain.doFilter(req, res);
}
catch (IOException e)
{
e.printStackTrace();
}
catch (ServletException e)
{
e.printStackTrace();
}
}
public void destroy()
{
commonEncoding = null;
filterConfig = null;
}
}