zoukankan      html  css  js  c++  java
  • 关于org.springframework.web.filter.CharacterEncodingFilter的学习

    介绍

    org.springframework.web.filter.CharacterEncodingFilter
    这是一个过滤器,是Spring在web请求中定义request和response的编码。

    使用场景

    当客户端和服务端使用了不同的字符集进行编码,就会出现乱码的问题。这就需要服务端在收到客户端发来的数据,或返回给客户端的数据时,能够使用统一的字符集进行编码,以避免乱码的出现。

    使用方式

    具体是在wen.xml中进行设置,具体使用方法如下:

    	<filter>
    		<filter-name>encodingFilter</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>encodingFilter</filter-name>
    		<url-pattern>*.do</url-pattern>
    		<url-pattern>*.jsp</url-pattern>
    		<url-pattern>/api/content</url-pattern>
    		<url-pattern>/servlet/userSelect</url-pattern>
    	</filter-mapping>
    

    设置说明

    CharacterEncodingFilter类具有encoding和forceEncoding两个属性,其中encoding是表示设置request的编码,forceEncoding表示是否同时设置response的编码。

    查看CharacterEncodingFilter的源码

    	@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);
    	}
    

    通过源码也能看见,encodin用于设置request的编码,而forceEncoding为ture时设置response的编码。

  • 相关阅读:
    从TCP三次握手说起——浅析TCP协议中的疑难杂症
    动态绑定是如何实现的?
    C++对象的内存模型
    C/C++关键字
    libevent库介绍--事件和数据缓冲
    libevent编程疑难解答
    大型工程多个目录下的Makefile写法
    C++中的RAII机制
    C++中的智能指针
    二叉树的非递归遍历
  • 原文地址:https://www.cnblogs.com/wsygdb/p/8797012.html
Copyright © 2011-2022 走看看