标签:
利用包装类,解决乱码问题
web.xml的配置
<filter> <filter-name>CharacterEncodingFilter2</filter-name> <filter-class>cn.itcast.web.filter.example.CharacterEncodingFilter2</filter-class> </filter> <filter-mapping> <filter-name>CharacterEncodingFilter2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
Filter代码的实现
//真正解决全站乱码 public class CharacterEncodingFilter2 implements Filter { public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) req; HttpServletResponse response = (HttpServletResponse) resp; request.setCharacterEncoding("UTF-8"); //post get response.setCharacterEncoding("UTF-8"); response.setContentType("text/html;charset=UTF-8"); chain.doFilter(new MyRequest(request), response); //request.getparameter("password"); } /* 1.写一个类,实现与被增强对象相同的接口 2.定义一个变量,记住被增强对象 3.定义一个构造方法,接收被增强对象 4.覆盖想增强的方法 5.对于不想增强的方法,直接调用被增强对象(目标对象)的方法 */ class MyRequest extends HttpServletRequestWrapper{ private HttpServletRequest request; public MyRequest(HttpServletRequest request) { super(request); this.request = request; } @Override public String getParameter(String name) { String value = this.request.getParameter(name); if(!request.getMethod().equalsIgnoreCase("get")){ return value; } if(value==null){ return null; } try { return value = new String(value.getBytes("iso8859-1"),request.getCharacterEncoding()); } catch (UnsupportedEncodingException e) { throw new RuntimeException(e); } } } public void destroy() { // TODO Auto-generated method stub } public void init(FilterConfig filterConfig) throws ServletException { } }
标签:
原文地址:http://www.cnblogs.com/zhangbaowei/p/4730847.html