解决springmvc项目中使用过滤器来解决请求方式为post时出现乱码的问题

 更新时间:2020年08月21日 09:53:15   作者:iCanFly.  
这篇文章主要介绍了springmvc项目中使用过滤器来解决请求方式为post时出现乱码的问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

在spring项目中,当请求方式为post时,可能在获取数据之后会有乱码的情况,其中一种解决方法就是在拿到请求参数之前设置编码格式为utf-8,如下

 request.setCharacterEncoding("utf-8");
  String strId = request.getParameter("id");
  String strName = request.getParameter("name");
  String strSex = request.getParameter("sex");

但是当有多个处理器方法的时候每个方法中都要设置编码格式就显得过于繁琐,所以推荐第二种解决方案:使用过滤器只要在web.xml中对过滤器进行声明注册就可以了

<!--注册声明过滤器-->
 <filter>
  <filter-name>characterEncodingFilter</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>
<!--强制请求对象的编码格式 使用字符集encoding-->
  <init-param>
   <param-name>forceRequestEncoding</param-name>
   <param-value>true</param-value>
  </init-param>
<!--强制响应对象使用encoding的字符集编码-->
  <init-param>
   <param-name>forceResponseEncoding</param-name>
   <param-value>true</param-value>
  </init-param>
 </filter>
 
 <filter-mapping>
<!--强制所有请求先通过过滤器处理-->
  <filter-name>characterEncodingFilter</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>

另外,我们可以看一下CharacterEncodingFilter的实现方法的实现就知道为什么要设置后边的encoding,forceRequestEncoding,forceResponseEncoding这三个参数了,因为这三个参数是这个方法中的是三个私有属性

public class CharacterEncodingFilter extends OncePerRequestFilter {
 @Nullable
 private String encoding;
 private boolean forceRequestEncoding;
 private boolean forceResponseEncoding;
 
 public CharacterEncodingFilter() {
  this.forceRequestEncoding = false;
  this.forceResponseEncoding = false;
 }
 
 public CharacterEncodingFilter(String encoding) {
  this(encoding, false);
 }
 
 public CharacterEncodingFilter(String encoding, boolean forceEncoding) {
  this(encoding, forceEncoding, forceEncoding);
 }
 
 public CharacterEncodingFilter(String encoding, boolean forceRequestEncoding, boolean forceResponseEncoding) {
  this.forceRequestEncoding = false;
  this.forceResponseEncoding = false;
  Assert.hasLength(encoding, "Encoding must not be empty");
  this.encoding = encoding;
  this.forceRequestEncoding = forceRequestEncoding;
  this.forceResponseEncoding = forceResponseEncoding;
 }

总结

到此这篇关于springmvc项目中使用过滤器来解决请求方式为post时出现乱码的问题的文章就介绍到这了,更多相关springmvc post请求乱码内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 使用jpa的实体对象转json符串时懒加载的问题及解决

    使用jpa的实体对象转json符串时懒加载的问题及解决

    这篇文章主要介绍了使用jpa的实体对象转json符串时懒加载的问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-02-02
  • Netty与Spring Boot的整合实现

    Netty与Spring Boot的整合实现

    这篇文章主要介绍了Netty与Spring Boot的整合的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • spring如何集成cxf实现webservice接口功能详解

    spring如何集成cxf实现webservice接口功能详解

    这篇文章主要给大家介绍了关于spring如何集成cxf实现webservice接口功能的相关资料,文中通过示例代码介绍的非常详细,对大家 的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起看看吧
    2018-07-07
  • Java struts2 package元素配置及实例解析

    Java struts2 package元素配置及实例解析

    这篇文章主要介绍了Java struts2 package元素配置及实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11
  • java.util.Random和concurrent.ThreadLocalRandom使用对比

    java.util.Random和concurrent.ThreadLocalRandom使用对比

    这篇文章主要介绍了java.util.Random和concurrent.ThreadLocalRandom使用对比,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • plantuml画图实现代码画时序图UML用例图

    plantuml画图实现代码画时序图UML用例图

    这篇文章主要为大家介绍了plantuml画图实现代码画时序图示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-07-07
  • Spring 控制反转和依赖注入的具体使用

    Spring 控制反转和依赖注入的具体使用

    本文主要介绍了Spring 控制反转和依赖注入,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • SpringBoot整合ELK做日志超完整详细教程

    SpringBoot整合ELK做日志超完整详细教程

    本文详细介绍了如何在springboot中快速接入ELK的过程,ELK可以说在实际项目中具有很好的适用价值,不管是小项目,还是中大型项目,都具备普适参考性,值得深入了解和学习,感兴趣的朋友一起看看吧
    2024-01-01
  • SpringMVC自定义拦截器登录检测功能的实现代码

    SpringMVC自定义拦截器登录检测功能的实现代码

    这篇文章主要介绍了SpringMVC自定义拦截器登录检测功能的实现,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-08-08
  • 解决springmvc关于前台日期作为实体类对象参数类型转换错误的问题

    解决springmvc关于前台日期作为实体类对象参数类型转换错误的问题

    下面小编就为大家带来一篇解决springmvc关于前台日期作为实体类对象参数类型转换错误的问题。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06

最新评论