關於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的編碼。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM