Java CharacterEncodingFilter案例詳解
一、什麼是CharacterEncodingFilter
官方解釋如下
是spring內置過濾器的一種,用來指定請求或者響應的編碼格式。在web開發中經常被從來使用
二、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用來指定編碼格式,forceEncoding表示是否強制response的編碼格式也是encoding格式
三、CharacterEncodingFilter 原理
服務器啟動的時候就會創建Filter,將init-param中的參數加載,註入到CharacterEncodingFilter 類中,瀏覽器每次發送請求都會經過這個過濾器,然後調用doFilterInternal
CharacterEncodingFilter 類圖
可以看到CharacterEncodingFilter繼承OncePerRequestFilter,OncePerRequestFilter是個抽象類,其中的抽象方法doFilterInternal被CharacterEncodingFilter實現,同時OncePerRequestFilter實現瞭doFilter方法,調用瞭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); }
到此這篇關於Java CharacterEncodingFilter案例詳解的文章就介紹到這瞭,更多相關Java CharacterEncodingFilter內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- springmvc字符編碼過濾器CharacterEncodingFilter的使用
- Java CharacterEncodingFilter過濾器的理解和配置案例詳解
- 聊聊java 過濾器、監聽器、攔截器的區別(終結篇)
- Java filter中的chain.doFilter使用詳解
- SpringMVC記錄我遇到的坑_AOP註解無效,切面不執行的解決