天天看点

Java中Web开发之乱码问题分析(问题背景 + 问题解决:三次失败案例,两次成功案例)

写下此文

文章目录

  • 问题背景
  • 问题解决
  • 失败案例1
  • 失败案例2
  • 失败案例3
  • 成功案例1
  • 成功案例2(推荐)

问题背景

Java中Web开发之乱码问题分析(问题背景 + 问题解决:三次失败案例,两次成功案例)
Java中Web开发之乱码问题分析(问题背景 + 问题解决:三次失败案例,两次成功案例)

出现乱码

Java中Web开发之乱码问题分析(问题背景 + 问题解决:三次失败案例,两次成功案例)

问题解决

失败案例1

在之前的Servlet中,我们用HttpServlet Request / Response解决乱码,现在也尝试一下

Java中Web开发之乱码问题分析(问题背景 + 问题解决:三次失败案例,两次成功案例)

还是乱码

Java中Web开发之乱码问题分析(问题背景 + 问题解决:三次失败案例,两次成功案例)

失败案例2

在之前的Servlet中,拦截器的方式也可以解决(当然,和直接在Servlet中用req和resp设置原理一样,这里顺便借这个错回顾一下)

Java中Web开发之乱码问题分析(问题背景 + 问题解决:三次失败案例,两次成功案例)

当然,和上面是同样的原理,不出所料,也是不行

Java中Web开发之乱码问题分析(问题背景 + 问题解决:三次失败案例,两次成功案例)

失败案例3

利用produces属性,当然,这也和失败案例1的原理相同

Java中Web开发之乱码问题分析(问题背景 + 问题解决:三次失败案例,两次成功案例)

成功案例1

当我们将之前的POST方式提交,改为GET方式请求

Java中Web开发之乱码问题分析(问题背景 + 问题解决:三次失败案例,两次成功案例)

则不再出现乱码问题,可见,请求方式的不同,也会导致乱码问题的出现

Java中Web开发之乱码问题分析(问题背景 + 问题解决:三次失败案例,两次成功案例)

成功案例2(推荐)

Spring MVC 帮我们配置了一个过滤器,直接在web.xml中配置即可

<filter>
   <filter-name>encoding</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>

    <init-param>
        <param-name>encoding</param-name>
        <param-value>utf-8</param-value>
    </init-param>
</filter>

<filter-mapping>
    <filter-name>encoding</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>      

也成功解决

Java中Web开发之乱码问题分析(问题背景 + 问题解决:三次失败案例,两次成功案例)

注:这种方法,有些极端情况过滤器对 get 请求方式的支持不好

处理方法:

1、修改tomcat配置文件,设置编码

Java中Web开发之乱码问题分析(问题背景 + 问题解决:三次失败案例,两次成功案例)