java string contains,詳解Spring中的CharacterEncodingFilter--forceEncoding為true在java代

 2023-11-19 阅读 24 评论 0

摘要:在項目中有很多讓人頭疼的問題,其中,編碼問題位列其一,那么在Spring框架中是如何解決從頁面傳來的字符串的編碼問題的呢?下面我們來看看Spring框架給我們提供過濾器CharacterEncodingFilter 1.看清結構: 可以看到其繼承GenericFilterBean和

在項目中有很多讓人頭疼的問題,其中,編碼問題位列其一,那么在Spring框架中是如何解決從頁面傳來的字符串的編碼問題的呢?下面我們來看看Spring框架給我們提供過濾器CharacterEncodingFilter

1.看清結構:

詳解Spring中的CharacterEncodingFilter【原】
可以看到其繼承GenericFilterBean和OncePerRequestFilter,也就是說,這個過濾器就是針對于每次瀏覽器請求進行過濾的,然后再其之上添加了父類沒有的功能即處理字符編碼。

?

java string contains?2.官方解釋:

Servlet 2.3/2.4 Filter that allows one to specify a character encoding for requests.?This is useful because current browsers typically do not set a character encoding even if specified in the HTML page or form.?(這句話就說你在html頁面或表單中設置編碼是沒有用的)

This filter can either apply its encoding if the request does not already specify an encoding,?or enforce this filter's encoding in any case ("forceEncoding"="true").(只要你設置了foreEncoding=true,則在代碼中設置編碼格式沒用,)In the latter case, the encoding will also be applied as default response encoding on Servlet 2.4+ containers (although this will usually be overridden by a full content type set in the view).

?

3.如何使用

java.lang.noclassdeffounderror、下面來看看如何在web.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>

?其中encoding用來設置編碼格式,forceEncoding用來設置是否理會 request.getCharacterEncoding()方法,設置為true則強制覆蓋之前的編碼格式。

?

Java substring、4.源碼賞析

詳解Spring中的CharacterEncodingFilter【原】

當Servlet容器啟動的時候,會讀取web.xml中對于過濾器的配置信息,?讀取到<init-param>中的子標簽<param-name>encoding和forceEncoding所對應的<param-value>的值,再通過調用該類setEncoding(String?encoding)和setForceEncoding(boolean?forceEncoding)?將值注入到這連個字段中。
詳解Spring中的CharacterEncodingFilter【原】

在這里就能看到為什么設置foreEncoding為true會覆蓋掉request.getCharacterEncoding()中的方法了吧,呵呵,還是那句話,源碼之前了無秘密,只有深入到源代碼之中才能看清本質。

轉載于:https://www.cnblogs.com/sunrunzhi/p/5803029.html

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/1/180377.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息