通過重寫request.getParameter方法來解決中文亂碼問題。


在原生servlet的商城項目中,BeanUtils.populate方法封裝不上注冊的參數。

已知BeanUtils.populate方法是封裝不上date對象的,於是自定義了一個轉換器用來封裝Data對象。

 

封裝成功后發現出現中文亂碼問題。

本來以為是數據庫的問題。把數據庫的表結構看了一下,發現就是utf-8;

然后在將數據存入數據庫之前,將數據進行輸出,發現確實在之前就亂碼了。

試試比較常見的兩個方法。

以上設置沒有什么卵用 = =,網上說上面兩個方法只對post請求生效。然而我的就是post請求。可是沒有效果。

輸出的結果仍舊亂碼。

在網上查找說,由於tomcat默認編碼是iso-8859-1,設置tomcat配置文件中的server.xml,給配置文件中添加一個編碼,為utf-8。

由於我用的是myEcplise,雖然也不影響。於是興沖沖的跑去看了看配置文件。

emmm第一行就讓我愣住了。本來就是utf-8啊= =,為什么還是會亂碼。

由於一直不清楚亂碼的原因。

於是采取了最破罐子破摔的辦法 = = ,手動編碼。

然后它正常了。

可是這樣一個一個手動轉換還是比較麻煩的。

如果有一個轉換器就好多了。

有一個辦法就是,重寫request..getParameter方法。

由於request的實現類是它的實現類的HttpServletRequestWrapper,所以我們的轉換器需要繼承這個類。

測試代碼如下:

在這里重寫的這個方法相當於一個包裝類,將request包裝起來,並對它的getParameter方法進行增強。

輸出結果沒有亂碼。

 


免責聲明!

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



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