Spring MVC 中解決中文亂碼問題

在 Spring MVC 中解決中文亂碼問題,需要從 請求參數編碼響應內容編碼 兩方面入手。以下是完整的解決方案:


一、解決請求參數中文亂碼

1. POST 請求編碼(表單提交)

配置 CharacterEncodingFilter
web.xml 中添加 Spring 提供的字符編碼過濾器,強制請求和響應使用 UTF-8 編碼:

<!-- 解決 POST 請求中文亂碼 -->
<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> 
</filter>
<filter-mapping><filter-name>encodingFilter</filter-name><url-pattern>/*</url-pattern>
</filter-mapping>
2. GET 請求編碼(URL 參數)

修改 Tomcat 的 server.xml
在 Tomcat 的 conf/server.xml 文件中,找到 Connector 配置,添加 URIEncoding="UTF-8"

<Connector port="8080" protocol="HTTP/1.1"URIEncoding="UTF-8"  <!-- 關鍵配置 -->connectionTimeout="20000"redirectPort="8443" />

二、解決響應內容中文亂碼

1. 配置消息轉換器(JSON 響應)

在 Spring MVC 配置文件中(如 spring-mvc.xml),設置 MappingJackson2HttpMessageConverter 的默認編碼:

<mvc:annotation-driven><mvc:message-converters><bean class="org.springframework.http.converter.StringHttpMessageConverter"><property name="supportedMediaTypes"><list><value>text/plain;charset=UTF-8</value><value>text/html;charset=UTF-8</value></list></property></bean><bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"><property name="supportedMediaTypes"><list><value>application/json;charset=UTF-8</value></list></property></bean></mvc:message-converters>
</mvc:annotation-driven>
2. 全局響應編碼配置

web.xml 中添加響應編碼過濾器:

<filter><filter-name>responseFilter</filter-name><filter-class>org.springframework.web.filter.HttpPutFormContentFilter</filter-class>
</filter>
<filter-mapping><filter-name>responseFilter</filter-name><url-pattern>/*</url-pattern>
</filter-mapping>

三、其他注意事項

1. JSP 頁面編碼設置

確保 JSP 頁面頭部聲明了 UTF-8 編碼:

<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %>
2. 數據庫連接編碼

如果涉及數據庫操作,在 JDBC URL 中指定字符集:

jdbc.url=jdbc:mysql://localhost:3306/mydb?useUnicode=true&characterEncoding=UTF-8
3. Ajax 請求編碼

對于前端 Ajax 請求(如 jQuery),顯式設置 contentType

$.ajax({url: '/api/data',type: 'POST',contentType: 'application/x-www-form-urlencoded; charset=UTF-8', // 明確設置編碼data: { name: '張三' },success: function(response) {console.log(response);}
});

四、驗證配置是否生效

  1. POST 請求測試
    提交表單后,觀察后端是否能正確接收中文參數。

  2. GET 請求測試
    訪問帶中文參數的 URL,如 http://localhost:8080/user?name=張三,檢查是否亂碼。

  3. 響應內容測試
    返回 JSON 數據或視圖頁面,確認中文字符正常顯示。


五、常見問題排查

  1. 亂碼僅在部分場景出現

    • 檢查是否遺漏了 GET 請求的 Tomcat 配置。
    • 確認前端請求頭 Content-Type 是否攜帶 charset=UTF-8
  2. Spring Boot 項目配置
    application.properties 中添加:

    server.servlet.encoding.force=true
    server.servlet.encoding.charset=UTF-8
    
  3. Tomcat 9+ 的兼容性
    新版 Tomcat 默認使用 UTF-8 編碼,但仍需確保 URIEncoding 配置正確。


通過以上步驟,可以徹底解決 Spring MVC 中的中文亂碼問題!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/904109.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/904109.shtml
英文地址,請注明出處:http://en.pswp.cn/news/904109.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

MYSQL數據庫突然消失

之前在下載mysql時發現沒有my.ini。考慮到后面的項目可能需要&#xff0c;看著教程自己創建了一次&#xff0c;當時就發生了所有數據庫消失的問題&#xff0c;近幾天這種事件又發生了。我在服務里看到我有mysql和mysql57兩個服務&#xff0c;啟動一個的時候另一個就無法啟動&am…

【Spring】idea + maven 從零創建Spring IoC容器示例

【Spring】idea maven 從零創建Spring IoC容器示例 1. 環境準備2. 創建maven項目3. 添加依賴4. 創建Java類與接口4.1 定義接口UserService4.2 實現接口UserServiceImpl 5. 配置Spring IoC容器6. 編寫主類調用IoC容器擴展&#xff1a;使用注解方式實現IoC1. 修改beans.xml2.使用…

面試回答之STAR結構

面試回答之STAR結構 1. STAR結構的起源 STAR是行為面試法&#xff08;Behavioral Interview&#xff09;的核心框架&#xff0c;由以下四個單詞首字母組成&#xff1a; ? Situation&#xff08;情境&#xff09; ? Task&#xff08;任務&#xff09; ? Action&#xff…

Kubernetes部署運行應用

①使用 Deployment 運行一個無狀態應用 ②運行一個單實例有狀態應用 ③運行一個有狀態的應用程序 ④使用 Persistent Volumes 部署 WordPress 和 MySQL

二叉搜索樹的最近祖先(遞歸遍歷)

235. 二叉搜索樹的最近公共祖先 - 力扣&#xff08;LeetCode&#xff09; class Solution { private:TreeNode*traversal(TreeNode*cur,TreeNode*p,TreeNode*q){if(curNULL){return NULL;}if(cur->val>p->val&&cur->val>q->val){TreeNode*lefttrave…

網絡:TCP三次握手、四次揮手

目錄 深刻理解三次握手 深刻理解四次揮手 深刻理解三次握手 三次握手時&#xff0c;如果最后一個ACK包&#xff0c;服務器沒有收到&#xff0c;此時&#xff1a; 客戶端&#xff1a;認為已經建立鏈接 服務器&#xff1a;認為沒有建立鏈接&#xff0c;還在超時等待。 而此…

MySQL 實戰 45 講 筆記 ----來源《極客時間》

01 | 基礎架構&#xff1a;一條SQL查詢語句是如何執行的&#xff1f; 1. MySQL 可以分為 Server層 和 存儲引擎層 兩部分。Server 層包括連接器、查詢緩存、分析器、優化器、執行器等。存儲引擎層支持 InnoDB、MyISAM等. (1) 連接器&#xff1a;管理連接&#xff0c;權限認證…

nextjs+supabase vercel部署失敗

1.不能含有<any> 改成unknown或者增加類(如圖) 2.檢查vecel是否配置環境變量&#xff08;即supabase的url和anon-key&#xff09;

數據庫Mysql_聯合查詢

或許自己的不完美才是最完美的地方&#xff0c;那些讓自己感到不安的瑕疵&#xff0c;最終都會變成自己的特色。 ----------陳長生. 1.介紹 1.1.為什么要進行聯合查詢 在數據設計的時候&#xff0c;由于范式的需求&#xff0c;會被分為多個表&#xff0c;但是當我們要查詢數據…

(37)VTK C++開發示例 ---紋理地球

文章目錄 1. 概述2. CMake鏈接VTK3. main.cpp文件4. 演示效果 更多精彩內容&#x1f449;內容導航 &#x1f448;&#x1f449;VTK開發 &#x1f448; 1. 概述 將圖片紋理貼到球體上&#xff0c;實現3D地球的效果。 該代碼使用了 VTK (Visualization Toolkit) 庫來創建一個紋理…

VMware-centOS7安裝redis分布式集群

1.部署redis包 1.1 在usr/local文件夾里創建文件夾 mkdir software 1.2 進入文件夾 cd /usr/local/software/ 下載redis wget http://download.redis.io/releases/redis-6.2.6.tar.gz解壓 tar zxvf redis-6.2.6.tar.gz重命名文件夾 mv redis-6.2.6 redis安裝gcc編譯器 yum i…

【RocketMQ Broker 相關源碼】- broker 啟動源碼(2)

文章目錄 1. 前言2. 創建 DefaultMessageStore3. DefaultMessageStore#load3.1 CommitLog#load3.2 loadConsumeQueue 加載 ConsumeQueue 文件3.3 創建 StoreCheckpoint3.4 indexService.load 加載 IndexFile 文件3.5 recover 文件恢復3.6 延時消息服務加載 4. registerProcesso…

認識含鹽褶皺和沖斷帶中的前造山運動蒸發巖變形

主要觀察結果的示意圖模型&#xff0c;并提出了三疊紀前造山蒸發巖變形的演化模型。&#xff08;a&#xff09; 蒸發巖的初始平緩隆起&#xff0c;在鹽枕和鹽背斜頂部有滑塌褶皺和同沉積伸展斷層。&#xff08;b&#xff09; 底辟形成&#xff0c;主動刺穿和拖動折疊長底辟&…

數據庫MySQL學習——day8(復習與鞏固基礎知識)

文章目錄 1. 數據庫基礎概念復習2. 常用SQL命令復習2.1 SELECT 查詢數據2.2 INSERT 插入數據2.3 UPDATE 更新數據2.4 DELETE 刪除數據 3. 表操作復習3.1 創建表3.2 修改表3.3 刪除表 4. 實踐任務4.1 創建樣例數據庫和表4.2 插入和更新數據4.3 使用WHERE、ORDER BY、LIMIT進行查…

TS 字面量類型

str是string類型l str2是常量&#xff0c;類型是字面量類型 用途&#xff1a;配合聯合類型確定更嚴謹精確的可選值利恩

【PostgreSQL數據分析實戰:從數據清洗到可視化全流程】1.3 客戶端工具選擇(psql/PGAdmin/DBeaver)

?? 點擊關注不迷路 ?? 點擊關注不迷路 ?? 點擊關注不迷路 文章大綱 1.3 客戶端工具選擇(psql/PGAdmin/DBeaver)1.3.1 工具定位與適用場景1.3.2 深度解析三大工具1.3.2.1 psql:命令行的終極掌控核心特性基礎操作示例優缺點分析1.3.2.2 PGAdmin:PostgreSQL 專屬管理平臺…

2023年第十四屆藍橋杯省賽B組Java題解【 簡潔易懂】

2023年第十四屆藍橋杯省賽B組Java 題解 比賽整體情況說明 第十四屆藍橋杯大賽省賽B組Java賽道共有10道題目&#xff0c;題型分布如下&#xff1a; 題目類型題量難度分布考察重點結果填空題53簡單 2中等基礎算法、數學邏輯、字符串處理編程大題52中等 3困難動態規劃、圖論、…

深度學習中的數據增強:提升食物圖像分類模型性能的關鍵策略

深度學習中的數據增強&#xff1a;提升食物圖像分類模型性能的關鍵策略 在深度學習領域&#xff0c;數據是模型訓練的基石&#xff0c;數據的數量和質量直接影響著模型的性能表現。然而&#xff0c;在實際項目中&#xff0c;獲取大量高質量的數據往往面臨諸多困難&#xff0c;…

jakarta.mail(javax.mail)包中關于SMTP協議支持的屬性參數配置

一、程序屬性配置 NO.NameTypeDescription1mail.smtp.userStringSMTP的默認用戶名。2mail.smtp.hostString要連接的SMTP服務器。3mail.smtp.portint如果 connect()方法未明確指定一個&#xff0c;則要連接的SMTP服務器端口。默認為25。4mail.smtp.connectiontimeoutint套接字連…

《解鎖SCSS算術運算:構建靈動樣式的奧秘》

SCSS作為CSS預處理器&#xff0c;算術運算功能猶如一顆璀璨明珠&#xff0c;賦予我們動態計算樣式屬性值的強大能力&#xff0c;讓網頁樣式不再是一成不變的刻板呈現&#xff0c;而是能夠根據各種條件和需求靈動變化。 在SCSS的世界里&#xff0c;算術運算絕非孤立的存在&…