springMVC通过过滤器解决请求参数乱码的问题

 今天在学习springMVC的时候,遇到了请求参数乱码的问题,特此写博客记录一下,方便回顾复习。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA54ix5aWz5Y-L55qE5bCP5p2O,size_20,color_FFFFFF,t_70,g_se,x_16

 watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA54ix5aWz5Y-L55qE5bCP5p2O,size_20,color_FFFFFF,t_70,g_se,x_16

 这是资源所在位置watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA54ix5aWz5Y-L55qE5bCP5p2O,size_11,color_FFFFFF,t_70,g_se,x_16

 在浏览器段访问testPojo.  控制台输出乱码

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA54ix5aWz5Y-L55qE5bCP5p2O,size_20,color_FFFFFF,t_70,g_se,x_16

 原来是要加字符编码的过滤器才行

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA54ix5aWz5Y-L55qE5bCP5p2O,size_20,color_FFFFFF,t_70,g_se,x_16

 记得加完之后要重启服务,因为修改了配置文件。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA54ix5aWz5Y-L55qE5bCP5p2O,size_13,color_FFFFFF,t_70,g_se,x_16

 源码部分

1.

然后我们分析源码。Ctrl+B跟进。发现有三个成员变量并且有NUllable注解(可以为空)

并且两个布尔类型的成员变量默认值false.

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA54ix5aWz5Y-L55qE5bCP5p2O,size_20,color_FFFFFF,t_70,g_se,x_16

2.

filter是服务器的三大组件之一,一般有初始化方法,执行操作方法,和销毁方法。但该类中没有doFilter方法。找到它的父类

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA54ix5aWz5Y-L55qE5bCP5p2O,size_20,color_FFFFFF,t_70,g_se,x_16

 3.

找到doFilter方法

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA54ix5aWz5Y-L55qE5bCP5p2O,size_20,color_FFFFFF,t_70,g_se,x_16

 4.

在子类里找到红箭头指向的方法。(已经在web.xml中filter的初始化参数部分设置过encoding的值 ),encoding不为空。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA54ix5aWz5Y-L55qE5bCP5p2O,size_20,color_FFFFFF,t_70,g_se,x_16

 

5.

getEncoding方法其实就是获取该类的成员变量encoding的值

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA54ix5aWz5Y-L55qE5bCP5p2O,size_12,color_FFFFFF,t_70,g_se,x_16

 6.往下执行,isForceRequestEncoding由于我们没有设置RequestEncoding的值,所以默认是false  由于我们没有设置过请求编码的值,所有返回null。这个逻辑表达式或返回的就是true,然后设置请求编码的值为UTF-8.watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA54ix5aWz5Y-L55qE5bCP5p2O,size_20,color_FFFFFF,t_70,g_se,x_16

7.重启服务后运行成功!

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA54ix5aWz5Y-L55qE5bCP5p2O,size_18,color_FFFFFF,t_70,g_se,x_16

 

*8.如果想设置响应编码的格式,只需要将成员变量ResponseEncoding的值设置为true.(在web.xml中配置)

 

 

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值