Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 544|回复: 0

javaweb解决post和get请求方式中文乱码问题(通用)

[复制链接]
  • TA的每日心情
    奋斗
    2025-3-18 14:43
  • 签到天数: 805 天

    [LV.10]以坛为家III

    2053

    主题

    2111

    帖子

    73万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    731050
    发表于 2021-4-27 00:21:53 | 显示全部楼层 |阅读模式

     

    • 添加一个过滤器,解决乱码问题,代码如下:
      1 import java.io.IOException;
      2 import java.io.UnsupportedEncodingException;
      3 import java.util.Map;
      4 
      5 import javax.servlet.Filter;
      6 import javax.servlet.FilterChain;
      7 import javax.servlet.FilterConfig;
      8 import javax.servlet.HttpConstraintElement;
      9 import javax.servlet.ServletException;
     10 import javax.servlet.ServletRequest;
     11 import javax.servlet.ServletResponse;
     12 import javax.servlet.http.HttpServletRequest;
     13 import javax.servlet.http.HttpServletRequestWrapper;
     14 
     15 /**
     16  * 通用解决get 和 post 方式请求的中文乱码问题
     17  * @author 代码小杨
     18  *
     19  */
     20 public class EncodingFilter implements Filter {
     21     
     22     public void destroy() {
     23     }
     24     
     25     @Override
     26     public void doFilter(ServletRequest request, ServletResponse response,
     27             FilterChain chain) throws IOException, ServletException {
     28         //处理请求乱码
     29         HttpServletRequest httpServletRequest = (HttpServletRequest) request;
     30         HttpServletRequest myRequest = new MyRequest(httpServletRequest);
     31 
     32         //处理响应乱码
     33         response.setContentType("text/html;charset=utf-8");
     34         chain.doFilter(myRequest, response);
     35     }
     36 
     37     @Override
     38     public void init(FilterConfig filterConfig) throws ServletException {
     39 
     40     }
     41 }
     42 
     43 //自定义request对象
     44 class MyRequest extends HttpServletRequestWrapper{
     45 
     46     private HttpServletRequest request;
     47     private boolean hasEncode;
     48 
     49     public MyRequest(HttpServletRequest request) {
     50         super(request);
     51         this.request=request;
     52     }
     53 
     54     //对需要增强的方法 进行覆盖
     55     @Override
     56     public Map getParameterMap() {
     57         //先获得请求方式
     58         String method = request.getMethod();
     59         if(method.equalsIgnoreCase("post")){   //post方式请求
     60             try {
     61                 request.setCharacterEncoding("utf-8");
     62                 return request.getParameterMap();
     63             } catch (UnsupportedEncodingException e) {
     64                 e.printStackTrace();
     65             }
     66         }else if(method.equalsIgnoreCase("get")){  //get方式请求
     67             Map<String,String[]> parameterMap = request.getParameterMap();
     68             if(!hasEncode){
     69                 for(String parameterName:parameterMap.keySet()){
     70                     String[] values = parameterMap.get(parameterName);
     71                     if(values!=null){
     72                         for (int i = 0; i < values.length; i++) {
     73                             try {
     74                                 values = new String(values.getBytes("ISO-8859-1"),"utf-8");
     75                             } catch (UnsupportedEncodingException e) {
     76                                 e.printStackTrace();
     77                             }
     78                         }
     79                     }
     80                 }
     81                 hasEncode =  true;
     82             }
     83             return parameterMap;
     84         }
     85         return super.getParameterMap();
     86     }
     87 
     88     @Override
     89     public String getParameter(String name) {
     90         Map<String,String[]> parameterMap = getParameterMap();
     91         String[] values = parameterMap.get(name);
     92         if(values==null){
     93             return null;
     94         }
     95         return values[0];
     96     }
     97 
     98     @Override
     99     public String[] getParameterValues(String name) {
    100         Map<String,String[]> parameterMap = getParameterMap();
    101         String[] values=parameterMap.get(name);
    102         return values;
    103     }
    104 }
    • web.xml文件中配置过滤器
     <filter>
          <filter-name>EncodingFilter</filter-name>
          <filter-class>com.**.web.filter.EncodingFilter</filter-class>
      </filter>
      
      <filter-mapping>
          <filter-name>EncodingFilter</filter-name>
          <url-pattern>/*</url-pattern>
      </filter-mapping>

     

    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2025-5-7 09:39 , Processed in 0.058432 second(s), 27 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表