通过过滤器(Filter)解决JSP的Post和Request中文乱码问题
jsp代码:
importjavax.servlet.*;
importjavax.servlet.http.*;
publicclassCharsetFilterimplementsFilter
{
publicvoiddestroy()
{
}
publicvoiddoFilter(ServletRequestrequest,ServletResponseresponse,FilterChainchain)
{
try
{
HttpServletRequesthttpRequest=(HttpServletRequest)request;
Stringmethod=httpRequest.getMethod().toLowerCase();
if(method.equals("post"))
{
//如果是post,即表单方法,直接设置charset即可
request.setCharacterEncoding("UTF-8");
}
elseif(method.equals("get"))
{
//如果是get方法
request.setCharacterEncoding("UTF-8");
request=newHttpServletRequestWrapper((HttpServletRequest)request)
{
publicStringgetParameter(Stringstr)
{
try
{
returnnewString(super.getParameter(str).getBytes("iso-8859-1"),"GBK");
}
catch(Exceptione)
{
returnnull;
}
}
};
}
chain.doFilter(request,response);
}
catch(Exceptione){}
}
publicvoidinit(FilterConfigfilterConfig)
{
}
}
过滤器配置:
<filter> <filter-name>CharFilter</filter-name> <filter-class>CharsetFilter</filter-class> </filter> <filter-mapping> <filter-name>CharFilter</filter-name> <url-pattern>/*</url-pattern> <dispatcher>REQUEST</dispatcher> </filter-mapping>