最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

springmvc字符編碼過(guò)濾器CharacterEncodingFilter的使用

 更新時(shí)間:2021年08月12日 14:46:35   作者:lianjunzongsiling  
這篇文章主要介紹了springmvc字符編碼過(guò)濾器CharacterEncodingFilter的使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。

字符編碼過(guò)濾器CharacterEncodingFilter

一、在web.xml中的配置

 <!-- characterEncodingFilter字符編碼過(guò)濾器 -->
 <filter>
  <filter-name>characterEncodingFilter</filter-name>
  <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
  <init-param>
   <!--要使用的字符集,一般我們使用UTF-8(保險(xiǎn)起見UTF-8最好)-->
   <param-name>encoding</param-name>
   <param-value>UTF-8</param-value>
  </init-param>
  <init-param>
   <!--是否強(qiáng)制設(shè)置request的編碼為encoding,默認(rèn)false,不建議更改-->
   <param-name>forceRequestEncoding</param-name>
   <param-value>false</param-value>
  </init-param>
  <init-param>
   <!--是否強(qiáng)制設(shè)置response的編碼為encoding,建議設(shè)置為true,下面有關(guān)于這個(gè)參數(shù)的解釋-->
   <param-name>forceResponseEncoding</param-name>
   <param-value>true</param-value>
  </init-param>
 </filter>
 <filter-mapping>
  <filter-name>characterEncodingFilter</filter-name>
  <!--這里不能留空或者直接寫 ' / ' ,否者不起作用-->
  <url-pattern>/*</url-pattern>
 </filter-mapping>

二、CharacterEncodingFilter過(guò)濾器類淺析

打開該類源碼,可以看到該類有三個(gè)類屬性

private String encoding; //要使用的字符集,一般我們使用UTF-8(保險(xiǎn)起見UTF-8最好)
private boolean forceRequestEncoding = false; //是否強(qiáng)制設(shè)置request的編碼為encoding
private boolean forceResponseEncoding = false; //是否強(qiáng)制設(shè)置response的編碼為encoding

主要方法只有一個(gè),也就是下面這個(gè),代碼邏輯很簡(jiǎn)單,如注釋所解釋

    @Override
    protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
        String encoding = getEncoding();
        if (encoding != null) { //如果設(shè)置了encoding的值,則根據(jù)情況設(shè)置request和response的編碼
         //若設(shè)置request強(qiáng)制編碼或request本身就沒(méi)有設(shè)置編碼
         //則設(shè)置編碼為encoding表示的值
            if (isForceRequestEncoding() || request.getCharacterEncoding() == null) { 
                request.setCharacterEncoding(encoding);
            }
         //若設(shè)置response強(qiáng)制編碼,則設(shè)置編碼為encoding表示的值
            if (isForceResponseEncoding()) { //請(qǐng)注意這行代碼,下面有額外提醒
                response.setCharacterEncoding(encoding);
            }
        }
        filterChain.doFilter(request, response);
    }
# 額外提醒
if (isForceResponseEncoding()) { 
 response.setCharacterEncoding(encoding);
}

是在

filterChain.doFilter(request, response);

之前執(zhí)行的,這也就是說(shuō)這段代碼的作用是設(shè)置response的默認(rèn)編碼方式,在之后的代碼里是可以根據(jù)需求設(shè)置為其他編碼的,即這里設(shè)置的編碼可能不是最終的編碼,網(wǎng)上很多文檔說(shuō)這里設(shè)置的是最終的編碼方式,這是錯(cuò)的。

SpringMVC配置字符編碼過(guò)濾器CharacterEncodingFilter來(lái)解決表單亂碼問(wèn)題

1、GET請(qǐng)求

針對(duì)GET請(qǐng)求,可以配置服務(wù)器Tomcat的conf\server.xml文件,在其第一個(gè)<Connector>標(biāo)簽中,添加URIEncoding="UTF-8"即可,如下所示:

<Connector URIEncoding="UTF-8" port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />

2、POST請(qǐng)求

但是,針對(duì)POST請(qǐng)求,僅配置Tomcat的server.xml文件中的<Connector標(biāo)簽不足以解決亂碼問(wèn)題,因此,需要利用Spring的字符編碼過(guò)濾器

org.springframework.web.filter.CharacterEncodingFilter

步驟:配置所開發(fā)項(xiàng)目的web.xml文件,添加以下內(nèi)容至文件開頭處即可:

<!-- ================start 配置spring的字符編碼過(guò)濾器================ -->    
    <filter>
        <!-- 解決post亂碼問(wèn)題需要配置spring編碼過(guò)濾器 -->
        <filter-name>characterEncoding</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>
    </filter>
    <filter-mapping>
        <filter-name>characterEncoding</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
<!-- ================end 配置spring的字符編碼過(guò)濾器================ -->

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • druid升級(jí)后sql監(jiān)控頁(yè)面為空白的解決

    druid升級(jí)后sql監(jiān)控頁(yè)面為空白的解決

    這篇文章主要介紹了druid升級(jí)后sql監(jiān)控頁(yè)面為空白的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • 淺談hibernate中對(duì)象的3種狀態(tài)_瞬時(shí)態(tài)、持久態(tài)、脫管態(tài)

    淺談hibernate中對(duì)象的3種狀態(tài)_瞬時(shí)態(tài)、持久態(tài)、脫管態(tài)

    下面小編就為大家?guī)?lái)一篇淺談hibernate中對(duì)象的3種狀態(tài)_瞬時(shí)態(tài)、持久態(tài)、脫管態(tài)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-08-08
  • Mybatis如何開啟控制臺(tái)打印sql語(yǔ)句

    Mybatis如何開啟控制臺(tái)打印sql語(yǔ)句

    在SpringBoot與Mybatis整合開發(fā)中,開啟控制臺(tái)SQL語(yǔ)句打印是一個(gè)常見需求,有助于調(diào)試與性能優(yōu)化,方法一:在Mybatis配置文件mybatis-config.xml中添加設(shè)置;方法二:在SpringBoot配置文件application.yml或properties中
    2024-11-11
  • Java中內(nèi)存區(qū)域的劃分與異常詳解

    Java中內(nèi)存區(qū)域的劃分與異常詳解

    最近在看java虛擬相關(guān)知識(shí),把每天看到的一些內(nèi)容做一個(gè)歸納總結(jié),下面這篇文章主要給大家介紹了關(guān)于Java中內(nèi)存區(qū)域的劃分與異常的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來(lái)一起看看吧
    2018-06-06
  • Springboot集成Ehcache3實(shí)現(xiàn)本地緩存的配置方法

    Springboot集成Ehcache3實(shí)現(xiàn)本地緩存的配置方法

    EhCache是一個(gè)純Java的進(jìn)程內(nèi)緩存框架,是 Hibernate 中默認(rèn)的 CacheProvider,同Redis一樣,EhCache 不是純內(nèi)存緩存,它支持基于內(nèi)存和磁盤的二級(jí)緩存,本文介紹Springboot集成Ehcache3實(shí)現(xiàn)本地緩存的配置方法,感興趣的朋友一起看看吧
    2024-04-04
  • 聊聊SpringBoot整合Nacos自動(dòng)刷新配置的問(wèn)題

    聊聊SpringBoot整合Nacos自動(dòng)刷新配置的問(wèn)題

    Nacos作為SpringBoot服務(wù)的注冊(cè)中心和配置中心,本例將在配置文件中配置一個(gè)?cml.age=100?的配置項(xiàng),程序中編寫一個(gè)方法讀取配置文件,并通過(guò)?Get--->/test/age?接口提供給瀏覽器訪問(wèn),感興趣的朋友跟隨小編一起看看吧
    2022-01-01
  • Java 阻塞隊(duì)列和線程池原理分析

    Java 阻塞隊(duì)列和線程池原理分析

    這篇文章主要介紹了Java 阻塞隊(duì)列和線程池原理分析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • SpringSecurity實(shí)現(xiàn)踢出指定用戶的示例

    SpringSecurity實(shí)現(xiàn)踢出指定用戶的示例

    SpringSecurity中使用SessionRegistryImpl類可以獲取session信息并踢出用戶,這篇文章主要介紹了SpringSecurity實(shí)現(xiàn)踢出指定用戶的示例,需要的朋友可以參考下
    2025-03-03
  • Spring Cloud 配置中心內(nèi)容加密的配置方法

    Spring Cloud 配置中心內(nèi)容加密的配置方法

    這篇文章主要介紹了Spring Cloud 配置中心內(nèi)容加密的配置方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-06-06
  • SpringBoot實(shí)現(xiàn)WebSocket的示例代碼

    SpringBoot實(shí)現(xiàn)WebSocket的示例代碼

    這篇文章主要為大家詳細(xì)介紹了SpringBoot實(shí)現(xiàn)WebSocket的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-11-11

最新評(píng)論

额敏县| 金沙县| 灯塔市| 黄冈市| 克什克腾旗| 荥阳市| 花莲市| 长岭县| 宝应县| 东城区| 噶尔县| 电白县| 大英县| 米易县| 连江县| 天津市| 藁城市| 曲麻莱县| 留坝县| 闽清县| 门头沟区| 磐石市| 云安县| 闽清县| 怀化市| 贡山| 资兴市| 旬阳县| 韶关市| 正安县| 靖州| 兴仁县| 永宁县| 西平县| 灯塔市| 焦作市| 柳州市| 云龙县| 盐亭县| 隆回县| 筠连县|