通过过滤器(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>