• 关于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的编码。

  • 相关阅读:
    OCP-1Z0-053-V12.02-597题
    OCP-1Z0-053-V12.02-599题
    OCP-1Z0-053-V12.02-609题
    OCP-1Z0-053-V12.02-604题
    OCP-1Z0-053-V12.02-607题
    OCP-1Z0-053-V12.02-588题
    OCP-1Z0-053-V12.02-592题
    OCP-1Z0-053-V12.02-587题
    OCP-1Z0-053-V12.02-582题
    OCP-1Z0-053-V12.02-583题
  • 原文地址:https://www.cnblogs.com/wsygdb/p/8797012.html
Copyright © 2020-2023  润新知