spring mvc 中文參數亂碼


最近做項目,springmvc的url中文參數亂碼:

 

請求url:

http://localhost:8080/supply/supply_list.htm?productName=測試&isHomePage=

在后端:

@RequestMapping(value = SupplyURL.SUPPLY_LIST, method = RequestMethod.GET)
    public String toSupplyList (Model model, String productName) {

        PageBean<Supply> pagination = supplyFacade.querySupplyByPage(searchSupplyVO);
        
        model.addAttribute("searchSupplyVO", searchSupplyVO);return "/supply/supply_list";
    }

這里productName的值就變成了亂碼,

檢查我的web的web.xml中已經增加了過濾中文編碼的:

 

<!-- Character Encoding filter -->
    <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>
        <init-param>
            <param-name>forceEncoding</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>

    <filter-mapping>
        <filter-name>encodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

 

但是還是亂碼。

 

仔細檢查了,還是中間容器tomcat導致的。修改tomcat的conf/server.xml中的

<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" useBodyEncodingForURI="true"  URIEncoding="UTF-8" />

加上useBodyEncodingForURI="true"  URIEncoding="UTF-8" 。即可。

比如我要下載

http://localhost:8080/template/檔案模板.xls

會轉義成如下的,此時如果加上 URIEncoding="UTF-8" ,則可以在webapp/template/目錄下找到文件。不會再報404了。

http://localhost:8080/template/%E5%AD%A6%E7%94%9F%E6%A1%A3%E6%A1%88%E5%AF%BC%E5%85%A5%E6%A8%A1%E6%9D%BF.xls

詳細參考本人另一篇博文:

http://www.cnblogs.com/gmq-sh/p/7492126.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM