SpringMVC請求/響應(yīng)亂碼問題解決方案解析
這篇文章主要介紹了SpringMVC請求/響應(yīng)亂碼問題解決方案解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
GET請求亂碼原因分析
GET請求參數(shù)是通過請求行中的URL發(fā)送給Web服務(wù)器(Tomcat)的。
Tomcat服務(wù)器會對URL進(jìn)行編碼操作(此時(shí)使用的是Tomcat設(shè)置的字符集,默認(rèn)是iso8859-1)
到了我們的應(yīng)用程序中的請求參數(shù),已經(jīng)是被Tomcat使用ISO8859-1字符集進(jìn)行編碼之后的了。
解決方式
方式一
修改tomcat配置文件,指定UTF-8編碼,如下:
<Connector URIEncoding="utf-8" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
方式二
對請求參數(shù)進(jìn)行重新編碼
String username = new String(request.getParamter("userName").getBytes("ISO8859-1"),"utf-8")
方式三
過濾器+請求裝飾器統(tǒng)一解決請求亂碼
MyRequestWrapper
MyCharacterEncodingFilter
請求亂碼解決之post亂碼問題#
在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> </filter> <filter-mapping> <filter-name>CharacterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
響應(yīng)亂碼之post亂碼問題
使用@RequestMapping注解中的produces屬性,指定響應(yīng)體的編碼格式
方式一:方法體上
@RequestMapping(value = "findItem",produces = "application/json;charset=utf8") @ResponseBody public String findItem(Integer id) { return "接收到的請求參數(shù)是:" + id; }
方式二:類上(統(tǒng)一管理編碼格式)
//@Controller //RestController:注解相當(dāng)于Controller注解和ResponseBody注解的結(jié)合體 @RestController @RequestMapping(value = "item",produces = "application/json;charset=utf8") public class ItemController {}
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Java實(shí)現(xiàn)對象列表導(dǎo)出為excel表格的實(shí)用工具類
這篇文章主要為大家詳細(xì)介紹了Java如何實(shí)現(xiàn)對象列表導(dǎo)出為excel表格的實(shí)用工具類,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-12-12Java通過httpclient比較重定向和請求轉(zhuǎn)發(fā)
這篇文章主要介紹了Java通過httpclient比較重定向和請求轉(zhuǎn)發(fā),HttpClient?4.x?版本,get請求方法會自動進(jìn)行重定向,而post請求方法不會自動進(jìn)行重定向,需要的朋友可以參考下2023-04-04Java redisTemplate阻塞式處理消息隊(duì)列
用redis中的List可以實(shí)現(xiàn)隊(duì)列,這樣可以用來做消息處理和任務(wù)調(diào)度的隊(duì)列。因此,本文將主要為大家介紹如何利用redisTemplate處理消息隊(duì)列,感興趣的小伙伴可以了解一下2021-12-12Ehcache簡介_動力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要介紹了Ehcache簡介,使用Spring的AOP進(jìn)行整合,可以靈活的對方法的返回結(jié)果對象進(jìn)行緩存2017-07-07Java創(chuàng)建對象(顯式創(chuàng)建和隱含創(chuàng)建)
本文詳細(xì)介紹對象的創(chuàng)建,在 Java 語言中創(chuàng)建對象分顯式創(chuàng)建與隱含創(chuàng)建兩種情況,顯式創(chuàng)建和隱含創(chuàng)建,,需要的朋友可以參考下面文章的具體內(nèi)容2021-09-09Java中Collection和Collections的區(qū)別
Collection是一個集合接口,集合類的頂級接口,Collections是一個包裝類,本文主要介紹了Java中Collection和Collections的區(qū)別,具有一定的參考價(jià)值,感興趣的可以了解一下2024-04-04