PathVariable傳過來的中文亂碼是怎麼回事

今天在寫一個spring mvc程序,因爲客戶原來設計的緣由,不能傳id過來,只能傳名稱,結果發現收到的數據是亂碼。web

百度以後,找到別人的解決方案,試了下沒問題,轉載一下。使用的web服務器是Tomcat。spring

Spring MVC從3.0開始支持REST服務器

Spring MVC從3.0開始支持REST,主要是經過@PathVariable來處理請求參數和路徑的映射.假設在Controller中定義了以下的請求映射
@RequestMapping(value = "/account/{key}")
若是請求路徑裏有中文(如/account/全聚德),可能會有亂碼問題,經過設置服務器的編碼能夠解決,對於Tomcat,只須要修改conf/server.xml文件,添加URIEncoding="UTF-8"便可,如:
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" URIEncoding="UTF-8"/>
(如下部分沒有涉及,因此沒有試驗。)
若是路徑中有點"."(如/account/abc.def.ghi),Spring會看成文件擴展名的點來處理,這時Controller中就只能取到最後一個點以前的數據,即abc.def,解決辦法是修改請求映射的定義爲如下形式:
@RequestMapping(value = "/account/{keyword:.*}")
相關文章
相關標籤/搜索