Java CharacterEncodingFilter案例详解
作者:NicoJ 时间:2022-03-21 18:22:32
一、什么是CharacterEncodingFilter
官方解释如下
是spring内置过滤器的一种,用来指定请求或者响应的编码格式。在web开发中经常被从来使用
二、CharacterEncodingFilter的用法
在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>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>characterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
其中encoding用来指定编码格式,forceEncoding表示是否强制response的编码格式也是encoding格式
三、CharacterEncodingFilter 原理
服务器启动的时候就会创建Filter,将init-param中的参数加载,注入到CharacterEncodingFilter 类中,浏览器每次发送请求都会经过这个过滤器,然后调用doFilterInternal
CharacterEncodingFilter 类图
可以看到CharacterEncodingFilter继承OncePerRequestFilter,OncePerRequestFilter是个抽象类,其中的抽象方法doFilterInternal被CharacterEncodingFilter实现,同时OncePerRequestFilter实现了doFilter方法,调用了doFilterInternal方法。
doFilterInternal方法
@Override
protected void doFilterInternal(
HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
throws ServletException, IOException {
if (this.encoding != null && (this.forceEncoding || request.getCharacterEncoding() == null)) {
request.setCharacterEncoding(this.encoding);
if (this.forceEncoding) {
response.setCharacterEncoding(this.encoding);
}
}
filterChain.doFilter(request, response);
}
来源:https://blog.csdn.net/weixin_36344031/article/details/83410753
标签:Java,CharacterEncodingFilter
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
批处理一键安装JDK/一键安装JRE和自动配置Java环境变量
2023-11-29 05:28:30
![](https://img.aspxhome.com/file/2023/2/60312_0s.png)
Java 关键字 速查表介绍
2022-07-03 22:04:48
SpringCloud用Zookeeper搭建配置中心的方法
2022-12-17 18:16:18
IntelliJ IDEA快速创建getter和setter方法
2023-06-04 00:44:46
![](https://img.aspxhome.com/file/2023/0/61650_0s.jpg)
Java中对象与C++中对象的放置安排的对比
2022-05-31 15:07:18
小程序与后端Java接 口交互实现HelloWorld入门
2023-11-04 18:55:31
![](https://img.aspxhome.com/file/2023/4/58864_0s.jpg)
Android登录注册功能 数据库SQLite验证
2023-10-01 20:58:55
![](https://img.aspxhome.com/file/2023/6/86926_0s.gif)
java多线程有序读取同一个文件
2022-05-28 20:41:57
![](https://img.aspxhome.com/file/2023/8/62778_0s.jpg)
老生常谈java中cookie的使用
2023-11-11 04:37:59
使用Java桥接模式打破继承束缚优雅实现多维度变化
2023-08-23 09:00:34
Mybatis初始化知识小结
2023-11-01 13:59:27
![](https://img.aspxhome.com/file/2023/8/58708_0s.png)
java之路径分隔符介绍
2022-12-14 22:35:23
mybatis框架xml下trim中的prefix与suffix等标签的用法
2023-09-20 18:55:24
Java 求解如何把二叉搜索树转换为累加树
2021-11-19 14:09:54
![](https://img.aspxhome.com/file/2023/8/61018_0s.png)
教你如何使用Java输出各种形状
2023-08-21 00:46:55
netty pipeline中的inbound和outbound事件传播分析
2023-08-27 06:57:00
![](https://img.aspxhome.com/file/2023/5/58285_0s.png)
Java8中的LocalDateTime你会使用了吗
2023-11-15 07:02:07
使用反射方式获取JPA Entity的属性和值
2023-07-24 17:43:22
springboot schedule 解决定时任务不执行的问题
2021-05-30 05:00:38
Java8新特性:lambda表达式总结
2023-11-29 00:16:52