在原生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方法進行增強。
輸出結果沒有亂碼。