1. 程式人生 > >SpringMVC之GET中文亂碼解決方案

SpringMVC之GET中文亂碼解決方案

JAVAEE的Servlet框架是Web應用中充當中央控制器的角色,採用HTTP協議的請求響應機制實現前端與後臺的資料傳輸和交換,出於網路頻寬和安全方面的考慮這些需要傳輸的資料不是以明文文字的格式進行傳輸的,需要一定的編碼格式進行處理——這就促使MIME型別資料的誕生,實現這種型別的演算法叫URLEncoding。

JAVAWeb伺服器都實現了URLEncoding演算法。無論GET還是POST請求都使用這一演算法實現對傳輸資料進行編碼。可令人深惡的是,除了英文字母和數字,Web伺服器都能自動編碼和解碼外,其餘的的一律由使用者自行處理。所以做web應用開發的中國人處理應用的亂碼是必不可少的一門技能。

關於中文亂碼的機制和處理方案,網上一抓一大把,然而對GET請求的處理多數都語焉不詳,現在趁寫SpringMVC應用的間隙,拿出自己GET亂碼解決的方案,供大家共同研究,參考,進步。

設計處理亂碼的程式時需要注意以下幾點:

1.             先查明伺服器字符集。tomcat預設使用的字符集是“ISO8859-1”而Weblogic預設是“UTF-8”,所以需要注意跨伺服器的程式碼。

2.             伺服器的編碼解碼機制。編碼:伺服器在處理客戶端的JSP中請求時就先以預設的字符集將請求資料進行編碼,然後才將編碼後的資料再進行URLencoding;解碼:資料傳輸到後臺應用處理程式時,就進行了一次URLdecoder,所以留給後臺處理程式的資料是經過應用伺服器編碼過的資料,這裡需要程式設計師進行處理。

3.             無論請求還是轉發(forward),伺服器都要進行一次編碼。

下面的示例是:先從一個JSP提交資料到後臺處理程式的一個方法,該方法對資料進行封裝後再轉發到一個新的JSP頁面,在這新的JSP顯示封裝後的資料。

接上一節,繼續新增程式碼。

程式碼code-2:

JSP頁面:

EL函式,code-3:

操作過程:

請求:http://localhost:8080/springmvcdemo/show.do

提交效果:


想跨應用伺服器實現,就寫一properties檔案,將伺服器的字符集配置在裡面,再讀到EL函式實現類的方法引數上就好了。EL函式的配置就不貼了,太沒技術含量了。好了,這一節就這麼些了,下一節整合POJO業務模組和Ajax,待續。