Java CharacterEncodingFilter案例詳解
一、什么是CharacterEncodingFilter
官方解釋如下
是spring內(nèi)置過(guò)濾器的一種,用來(lái)指定請(qǐng)求或者響應(yīng)的編碼格式。在web開(kāi)發(fā)中經(jīng)常被從來(lái)使用
二、CharacterEncodingFilter的用法
在web.xml中的配置
<filter> <filter-name>characterEncodingFilter</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>characterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
其中encoding用來(lái)指定編碼格式,forceEncoding表示是否強(qiáng)制response的編碼格式也是encoding格式
三、CharacterEncodingFilter 原理
服務(wù)器啟動(dòng)的時(shí)候就會(huì)創(chuàng)建Filter,將init-param中的參數(shù)加載,注入到CharacterEncodingFilter 類中,瀏覽器每次發(fā)送請(qǐng)求都會(huì)經(jīng)過(guò)這個(gè)過(guò)濾器,然后調(diào)用doFilterInternal
CharacterEncodingFilter 類圖
可以看到CharacterEncodingFilter繼承OncePerRequestFilter,OncePerRequestFilter是個(gè)抽象類,其中的抽象方法doFilterInternal被CharacterEncodingFilter實(shí)現(xiàn),同時(shí)OncePerRequestFilter實(shí)現(xiàn)了doFilter方法,調(diào)用了doFilterInternal方法。
doFilterInternal方法
@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); }
到此這篇關(guān)于Java CharacterEncodingFilter案例詳解的文章就介紹到這了,更多相關(guān)Java CharacterEncodingFilter內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
spring中前端明明傳了值后端卻接收不到問(wèn)題解決辦法
在學(xué)習(xí)Spring的時(shí)候遇到了一個(gè)問(wèn)題,后臺(tái)一直接收不到前臺(tái)傳遞過(guò)來(lái)的參數(shù),耽誤了好長(zhǎng)時(shí)間終于找到了原因,這篇文章主要給大家介紹了關(guān)于spring中前端明明傳了值后端卻接收不到問(wèn)題的解決辦法,需要的朋友可以參考下2024-05-05在SpringBoot項(xiàng)目中實(shí)現(xiàn)給所有請(qǐng)求加固定前綴
這篇文章主要介紹了在SpringBoot項(xiàng)目中實(shí)現(xiàn)給所有請(qǐng)求加固定前綴,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-02-02一篇文章教你如何用多種迭代寫法實(shí)現(xiàn)二叉樹(shù)遍歷
這篇文章主要介紹了C語(yǔ)言實(shí)現(xiàn)二叉樹(shù)遍歷的迭代算法,包括二叉樹(shù)的中序遍歷、先序遍歷及后序遍歷等,是非常經(jīng)典的算法,需要的朋友可以參考下2021-08-08詳解Spring學(xué)習(xí)總結(jié)——Spring實(shí)現(xiàn)AOP的多種方式
這篇文章主要介紹了詳解Spring學(xué)習(xí)總結(jié)——Spring實(shí)現(xiàn)AOP的多種方式,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-01-01JAVA發(fā)送HTTP請(qǐng)求的多種方式詳細(xì)總結(jié)
目前做項(xiàng)目中有一個(gè)需求是這樣的,需要通過(guò)Java發(fā)送url請(qǐng)求,查看該url是否有效,這時(shí)我們可以通過(guò)獲取狀態(tài)碼來(lái)判斷,下面這篇文章主要給大家介紹了關(guān)于JAVA發(fā)送HTTP請(qǐng)求的多種方式總結(jié)的相關(guān)資料,需要的朋友可以參考下2023-01-01基于IDEA 的遠(yuǎn)程調(diào)試 Weblogic的操作過(guò)程
這篇文章主要介紹了基于IDEA 的遠(yuǎn)程調(diào)試 Weblogic的操作過(guò)程,本文通過(guò)圖文實(shí)例相結(jié)合給大家介紹的非常詳細(xì),需要的朋友可以參考下2021-09-09java用arraycopy實(shí)現(xiàn)多擊事件
這篇文章主要介紹了java用arraycopy實(shí)現(xiàn)多擊事件的多種方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-11-11