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

解決SpringMVC獲取請求參數(shù)亂碼問題

 更新時間:2024年11月04日 09:39:34   作者:你叫什么名字?我不信!  
在使用SpringMVC和thymeleaf進行請求參數(shù)處理時,可能會遇到亂碼問題,對于GET方法亂碼,可通過修改Tomcat的server.xml文件,添加URIEncoding="UTF-8"解決,而POST方法亂碼,則需在web.xml配置SpringMVC提供的過濾器

使用配置:jdk18   

  • tomcat8.5.75 (由于10經(jīng)常會出一些莫名其妙的問題,所以就讓它去我的D盤吃灰了)              
  • IDEA 2021.3.2
  • spring-framework-5.3.15

問題引出    

當(dāng)我們使用 SpringMVC 和 thymeleaf 進行請求參數(shù)的時候,習(xí)慣上會使用form搭配注解實現(xiàn)

例如如下代碼:

<form th:action="@{}" method=" "></form>

其中@{}里寫路徑,而 method 里有兩種寫法:一種是 post ,另一種是 get ,兩種寫法均會導(dǎo)致控制臺或頁面輸出亂碼問題由于get方法亂碼是由于tomcat導(dǎo)致的,所以有根本解決方法,后續(xù)會說而post方法的亂碼是因為我們沒有設(shè)置相應(yīng)編碼,直接進行獲取請求參數(shù),況且,如果設(shè)置編碼,但是如果有

<load-on-startup>1</load-on-startup>

獲取參數(shù)在前,依然會導(dǎo)致亂碼問題,所以我們需要在獲取請求參數(shù)之前就要設(shè)置編碼解決方案

get方法亂碼解決方案

在 *tomcat* 文件夾里找到 *conf* 文件夾,里面的 *server.xml* 文件,點擊編輯,找到

在這個位置,添加*URIEncoding="UTF-8"*即可解決

post方法亂碼解決方案

正因為存在上述問題,所以我們需要考慮,是否存在比servlet執(zhí)行時間更早的組件。

服務(wù)器三大組件:

  • 監(jiān)聽器
  • 過濾器
  • servlet

而監(jiān)聽器是用于監(jiān)聽servletContext的創(chuàng)建和銷毀,所以考慮只要當(dāng)前我們訪問的地址滿足過濾路徑,均會被過濾器進行過濾,所以我們選擇在過濾器進行編碼,且 SpringMVC 已經(jīng)提供好,直接使用即可,所以我們在 *web.xml* 進行配置(PS:不管把filter寫在哪,都會比 servlet 先進行初始化)

其中必須要寫

<init-param>
      	<param-name>encoding</param-name>
     	<param-value>UTF-8</param-value>
</init-param>
<init-param>
       <param-name>forceResponseEncoding</param-name>
       <param-value>true</param-value>
</init-param>

通過源碼可以看到

首先說一下為什么找到的是這個源碼:

最主要的原因是參數(shù)里有*FilterChain*(過濾器鏈),有這個參數(shù)百分之八九十是執(zhí)行過濾的

可以看到:

*encoding*可以為空,即我們需要重新設(shè)置,否則是默認(rèn)編碼,同時也是null,所以我們上面給*encodeing*設(shè)置為*UTF-8*,讓它不為空

且 *forceRequestEncodeing* 和 *forceResponseEncodeing* 定義的時候均為 false

因為我們沒有設(shè)置過 request.getCharacterEncoding() 所以默認(rèn)還是null,因此第一個if語句就可以執(zhí)行,也就是執(zhí)行 *request.setCharacterEncoding(encoding);* 這條語句 (請求編碼) 即

<init-param>
    <param-name>encoding</param-name>
    <param-value>UTF-8</param-value>
</init-param>

如果想要設(shè)置響應(yīng)編碼 就需要將下一個 if 語句也執(zhí)行 , 執(zhí)行條件可以看到是讓 *isForceResponseEncoding()* 為 *true* 所以有

<init-param>
    <param-name>forceResponseEncoding</param-name>
    <param-value>true</param-value>
</init-param>

這樣SpringMVC請求參數(shù)亂碼問題就可以解決了~~

總結(jié)

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

相關(guān)文章

  • Java將本地項目部署到Linux服務(wù)器的實踐

    Java將本地項目部署到Linux服務(wù)器的實踐

    本文主要介紹了Java將本地項目部署到Linux服務(wù)器的實踐,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧<BR>
    2022-06-06
  • Hbase、elasticsearch整合中jar包沖突的問題解決

    Hbase、elasticsearch整合中jar包沖突的問題解決

    本篇文章主要介紹了Hbase、elasticsearch整合中jar包沖突的問題解決,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-12-12
  • CountDownLatch基于AQS阻塞工具用法詳解

    CountDownLatch基于AQS阻塞工具用法詳解

    這篇文章主要為大家介紹了CountDownLatch基于AQS阻塞工具用法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-06-06
  • javaSE,javaEE,javaME的區(qū)別小結(jié)

    javaSE,javaEE,javaME的區(qū)別小結(jié)

    本篇文章小編就為大家簡單說說JavaSE、JavaEE、JavaME三者之間的區(qū)別,需要的朋友可以過來參考下,感興趣的小伙伴們可以參考一下
    2023-08-08
  • NoHttpResponseException問題排查解決記錄分析

    NoHttpResponseException問題排查解決記錄分析

    這篇文章主要為大家介紹了NoHttpResponseException問題排查解決記錄分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-08-08
  • 實戰(zhàn)分布式醫(yī)療掛號系統(tǒng)登錄接口整合阿里云短信詳情

    實戰(zhàn)分布式醫(yī)療掛號系統(tǒng)登錄接口整合阿里云短信詳情

    這篇文章主要為大家介紹了實戰(zhàn)分布式醫(yī)療掛號系統(tǒng)登錄接口整合阿里云短信詳情,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪<BR>
    2022-04-04
  • Springboot設(shè)置文件上傳大小限制的實現(xiàn)示例

    Springboot設(shè)置文件上傳大小限制的實現(xiàn)示例

    Spring Boot工程嵌入的tomcat限制了請求的文件大小默認(rèn)為1MB,單次請求的文件的總數(shù)不能大于10Mb,本文主要介紹了Springboot設(shè)置文件上傳大小限制的實現(xiàn)示例,感興趣的可以了解一下
    2023-11-11
  • Java中JWT的使用的詳細(xì)教程

    Java中JWT的使用的詳細(xì)教程

    JWT的本質(zhì)就是一個字符串,它是將用戶信息保存到一個Json字符串中,然后進行編碼后得到一個JWT token,并且這個JWT token帶有簽名信息,接收后可以校驗是否被篡改,所以可以用于在各方之間安全地將信息作為Json對象傳輸,本文介紹了Java中JWT的使用,需要的朋友可以參考下
    2023-02-02
  • Java中的Kafka為什么性能這么快及4大核心詳析

    Java中的Kafka為什么性能這么快及4大核心詳析

    這篇文章主要介紹了Java中的Kafka為什么性能這么快及4大核心詳析,文章通過圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-09-09
  • 使用java代碼實現(xiàn)一個月內(nèi)不再提醒,通用到期的問題

    使用java代碼實現(xiàn)一個月內(nèi)不再提醒,通用到期的問題

    這篇文章主要介紹了使用java代碼實現(xiàn)一個月內(nèi)不再提醒,通用到期的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01

最新評論

双流县| 庆阳市| 光泽县| 抚远县| 上犹县| 秭归县| 抚州市| 宁国市| 莲花县| 怀仁县| 西宁市| 绿春县| 石棉县| 肥东县| 岐山县| 宿松县| 罗甸县| 洪泽县| 锦屏县| 育儿| 江门市| 彰武县| 保康县| 紫阳县| 铜鼓县| 景洪市| 平利县| 怀来县| 诸暨市| 桐城市| 闽侯县| 萍乡市| 宁海县| 平原县| 靖西县| 共和县| 措美县| 米易县| 台山市| 伊春市| 伊宁县|