Filter过滤器解决request请求参数乱码的原理解析

本篇文章是对SpringMVC出现request请求参数乱码情况解决办法博客中“解决措施1”的原理解析,个人认为了解一些简单技术背后的原理对个人编程还是挺有帮助的。
如果有request请求参数乱码问题的小伙伴可以去查看下我上面提到的那片博客,希望对大家有所帮助!

1、进入CharacterEncodingFilter.class

在这里插入图片描述

2、CharacterEncodingFilter继承结构图

​ 可以看出CharacterEncodingFilter的曾祖父居然是Filter

在这里插入图片描述

在这里插入图片描述

3、doFilter( )方法

​ 我们重点看Filter接口的doFilter( )方法的实现情况:
在这里插入图片描述
​ doFilter( )方法在OncePerRequestFilter里实现:
在这里插入图片描述
​ 关键:doFilter( )方法里执行了doFilterInternal( ),而doFilterInternal( )方法的实现又在OncePerRequestFilter的子类CharacterEncodingFilter里实现。

​ 绕了一圈又回到了CharacterEncodingFilter类了,看下关键代码:
在这里插入图片描述

4、回顾下web.xml里的配置信息

在这里插入图片描述

5、CharacterEncodingFilter类中的属性

​ 查看源代码,CharacterEncodingFilter类有三个属性,并且发现无论有参还是无参构造方法forceRequestEncoding、

forceResponseEncoding这两个属性的初始值都是false。下面的主要目的就是解释为什么要改成ture?
在这里插入图片描述

6、关键代码

在这里插入图片描述
​ 1、我们在web.xml里设置了encoding为UTF-8,所以该值不为空。

​ 2、我们在web.xml里设置了forceRequestEncoding、forceResponseEncoding两个Boolean值为true,所以if语句可以执

行。

​ 3、分别将request、response的编码设置成encoding,也就是UTF-8。

到此,分析结束!

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

努力的clz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值