iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Java CharacterEncodingFilter过滤器的理解和配置案例详解
  • 491
分享到

Java CharacterEncodingFilter过滤器的理解和配置案例详解

2024-04-02 19:04:59 491人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

在WEB项目中我们经常会遇到当前台jsP页面和JAVA代码中使用了不同的字符集进行编码的时候就会出现表单提交的数据或者上传/下载中文名称文件出现乱码的问题,这些问题的原因就是因为我们

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过滤器内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Java CharacterEncodingFilter过滤器的理解和配置案例详解

本文链接: https://www.lsjlt.com/news/133794.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作