SpringMVC框架實踐中出現的中文亂碼問題解決,為什麼POST請求亂碼?
阿新 • • 發佈:2022-03-16
在練習SpringMVC框架的時候,對於前端的get或post請求時,我們總是碰到get請求方式中文正常編譯,但是對於post的請求,總是會出現亂碼的問題。如何解決呢,新增過濾器的配置即可。
在web.xml中配置過濾器就好了。程式碼在後邊:
那具體產生的原因是?
SpringMVC的底層其實就是Servlet的實現。
瀏覽器向伺服器傳送請求,是以請求協議包的形式完成的,請求協議包結構如下:
當請求協議包進到伺服器端之後,get請求方式,引數資訊包裹在請求頭中,Http伺服器用utf-8字符集進行解碼,而對於post的請求方式,引數資訊包裹在請求體中,Http伺服器用的ISO-8859-1字符集
<!--註冊宣告過濾器,解決post請求亂碼問題--> <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> <!--強制請求物件(HttpServletRequest)encoding編碼的值--> <init-param> <param-name>forceRequestEncoding</param-name> <param-value>true</param-value> </init-param> <!--設定強制應答物件(HttpServletResponse)的編碼值--> <init-param> <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>