doGet和doPost亂碼解決方案

2021-08-28 23:24:47 字數 992 閱讀 3301

亂碼是因為編碼和解碼的格式不一而引發的問題。

我們來看一下以下步驟:

1.在前端頁面傳輸資料時,會先將資料進行編碼再進行傳輸(瀏覽器預設的編碼格式是utf-8)

2.資料傳輸到servlet時,tomcat會使用其預設編碼進行解碼。

測試結果tomcat從8.0開始轉化為預設編碼為utf-8的格式了,但是8.0以下的tomcat預設的編碼還是iso-8859-1;

3.獲得的引數用response封裝返回時,要設定相對應的編碼格式和解碼格式。

修改tomcat下的conf/server.xml檔案,找到connector標籤,新增 uriencoding="utf-8"

最終結果為如下**:

response.setcharacterencoding("utf-8");

使用post進行獲取引數的時候要注意!

必須在dopost方法的一開始就使用:request.setcharacterencoding("utf-8");

或者在過濾器中一開始就寫上request.setcharacterencoding("utf-8");來保證post方式後面獲取到的parameter正常,

【這裡有個問題要記錄一下,如果不寫這一句直接在dopost中getparameter,就會造成獲取的中文引數異常:這句**約束post中的內容解碼格式為utf-8,必須寫在dopost或者filter中第乙個request.getparameter之前才行,如果沒有設定utf-8,在呼叫第乙個getparameter之後request中的所有鍵值對就都被解析成了iso-8859-1的編碼的字元了,再去設定characterencoding為utf-8就已經無效了,就只能通過getparameter之後new string(***.getbytes("iso-8859-1"),"utf-8")的方式來還原字串了】

但是get方式是取決於tomcat的預設urlencoding的編碼。

doGet和doPost的區別

doget 和dopost 的區別get 和post 是http 協議的兩種方法,另外還有 head,delete 等這兩種方法有本質的區別,get只有乙個流,引數附加在 url後,大小個數有嚴格限制且只能是字串。post 的引數是通過另外的流傳遞的,不通過 url,所以可以很大,也可以傳遞二進位制...

doGet和doPost的區別

在使用表單提交資料到伺服器的時候有兩張方式可共選擇,乙個是post乙個是get。可在 out.jsp頁面 request.getattribute username 在頁面上輸出username的資訊 這樣提交表單後,引數會自動新增到瀏覽器位址列中,帶來安全性問題。2.dopost 它用於客戶端把資...

servlet中doGet 和doPost的區別

推薦 參考 主要有以下2個區別 區別1 doget接收url傳來的引數,只能小於255的引數 dopost接收form傳來的引數,可以接受大引數 區別2 doget將傳遞的資料按照key value 放在url的後面,所以不安全。post方式提交資料時是採用的http post機制,是將表單中的字段...