过滤器解决全局乱码问题

我有一个很好的Java学习交流群,里面有很多技术大牛,如果你感兴趣的话可以加群(471948038)一起交流学习。

加上此段代码,再也不用担心乱码问题了!只要在web.xml文件中添加上相应的过滤器即可实现。

查看代码:
  1. public class AllCharacterEncoding implements Filter {
  2.                 private FilterConfig filterconfig;
  3.                 private String defaultencoding="UTF-8";
  4.         public void init(FilterConfig filterconfig) throws ServletException {
  5.                 this.filterconfig=filterconfig;
  6.         }
  7.         public void doFilter(ServletRequest req, ServletResponse resp,
  8.                         FilterChain chain) throws IOException, ServletException {
  9.                
复制代码
本帖隐藏的内容

  1.                 HttpServletRequest request=(HttpServletRequest)req;
  2.                 HttpServletResponse response=(HttpServletResponse)resp;
  3.                 
  4.                 String encoding = filterconfig.getInitParameter("encoding");
  5.                 if(encoding==null)
  6.                         encoding = defaultencoding;
  7.                 request.setCharacterEncoding(encoding);
  8.                 response.setCharacterEncoding(encoding);
  9.                 response.setContentType("text/html;charset="+encoding);
  10.                 MyServletRequest mrequest = new MyServletRequest(request);
  11.                 chain.doFilter(mrequest, response);
  12.         }
  13.         public void destroy() {
  14.         }
  15. }
  16.          class MyServletRequest extends HttpServletRequestWrapper{
  17.                  private HttpServletRequest request;
  18.                 private  String value;
  19.                 public MyServletRequest(HttpServletRequest request) {
  20.                         super(request);
  21.                 }
  22.                 //判断是不是get请求方式,如果是就手动进行编码
  23.                 @Override
  24.                 public String getParameter(String name) {
  25.                         //获得输入的值
  26.                         String value = super.getParameter(name);
  27.                         if(value==null)
  28.                                 return null;
  29.                         String method =super.getMethod();//获得请求方式
  30.                         if("get".equalsIgnoreCase(method)){
  31.                                 try {
  32.                                         value=new String(value.getBytes("ISO8859-1"), super.getCharacterEncoding());
  33.                                 } catch (UnsupportedEncodingException e) {
  34.                                         e.printStackTrace();
  35.                                 }
  36.                         }
  37.                         return value;
  38.                 }
  39.          }
复制代码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值