过滤器解决中文乱码(1)

来源:互联网 发布:手游麻将源码架设教程 编辑:程序博客网 时间:2024/05/16 17:12


①解决全站post和个get提交乱码

publicclass CharacterEncodingFilterimplements Filter {

   @Override

   publicvoid destroy() {

   }

   

   private Stringencoding;

   @Override

   publicvoid init(FilterConfig filterConfig)throws ServletException {

       encoding = filterConfig.getInitParameter("encoding"); // 获取配置文件中的参数,此处是获得字符编码

   }

 

   @Override

   publicvoid doFilter(ServletRequest request, ServletResponseresponse,

           FilterChain chain) throws IOException,ServletException {

       //post提交乱码

       request.setCharacterEncoding(encoding);

       HttpServletRequest req =(HttpServletRequest) request;

       if(req.getMethod().equals("GET")){

           request = new MyRequest(req);

       }

       chain.doFilter(request, response);

       

   }

}

 

class MyRequestextends HttpServletRequestWrapper{ // 这里只重写getParameters,有需要可以重写其他获得参数的方法

 

   public MyRequest(HttpServletRequestrequest) {

       super(request);

   }

 

   @Override

   public StringgetParameter(String name) {

       String val = super.getParameter(name);

       if(val !=null){

           try {

               val = new String(val.getBytes("ISO-8859-1"),super.getCharacterEncoding());

           } catch (UnsupportedEncodingException e) {

               e.printStackTrace();

           }

       }

       returnsuper.getParameter(name);

   }

}

0 0
原创粉丝点击