Java CharacterEncodingFilter案例详解
一、什么是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);
}
到此这篇关于Java CharacterEncodingFilter案例详解的文章就介绍到这了,更多相关Java CharacterEncodingFilter内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
servlet之session简介_动力节点Java学院整理
这篇文章主要介绍了servlet之session简介,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧2017-07-07
SpringBootWeb 入门了解 Swagger 的具体使用
这篇文章主要介绍了SpringBootWeb 入门了解 Swagger 的具体使用,Swagger 框架可以根据已经实现的方法或者类,通过页面的方式直观清晰的查看或者进行测试该方法,需要的朋友可以参考下2024-08-08


最新评论