Java CharacterEncodingFilter过滤器的理解和配置案例详解
在web项目中我们经常会遇到当前台JSP页面和JAVA代码中使用了不同的字符集进行编码的时候就会出现表单提交的数据或者上传/下载中文名称文件出现乱码的问题,这些问题的原因就是因为我们项目中使用的编码不一样。为了解决这个问题我们就可以使用CharacterEncodingFilter类,他是Spring框架对字符编码的处理,基于函数回调,对所有请求起作用,只在容器初始化时调用一次,依赖于servlet容器.具体配置如下:
<filter>
<filter-name>characterEncodingFilter</filter-name>
<!--配置转码,将编码都转为UTF-8-->
<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>
package org.springframework.web.filter;
import java.io.IOException;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class CharacterEncodingFilter extends OncePerRequestFilter {
private String encoding;
private boolean forceEncoding = false;
public void setEncoding(String encoding) {
this.encoding = encoding;
}
public void setForceEncoding(boolean forceEncoding) {
this.forceEncoding = forceEncoding;
}
@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);
}
}
从上面的配置和源码我们可以发现
在配置字符集过滤器时可设定两个参数的值,
1. encoding:字符集,即将过滤到的request的字符集设置为encoding指定的值,相当于
request.setCharacterEncoding("")
2. forceEncoding:字面意思是强制字符集,这个参数的值是指定response的字符集是否也设置成encoding所指定的字符集,所以你可以选择设置为true或false,当值为true时,相当于
request.setCharacterEncoding("");
response.setCharacterEncoding("");
当值为false时,相当于:
request.setCharacterEncoding("");
到此这篇关于Java CharacterEncodingFilter过滤器的理解和配置案例详解的文章就介绍到这了,更多相关Java CharacterEncodingFilter过滤器内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341