1. 程式人生 > >JavaWeb中表單資料的獲取及亂碼問題

JavaWeb中表單資料的獲取及亂碼問題

首先使用一個使用者提交介面作為舉例(文字框,密碼框,選擇,下拉表單等),效果如下

這裡寫圖片描述

注:HTML < form> 標籤的 action 屬性,其定義和用法是:

屬性值為URL,表示向何處傳送表單資料。其可能值:

  • 絕對 URL - 指向其他站點(比如 src=https://blog.csdn.net/Megustas_JJC/article/details/”www.example.com/example.htm”)
  • 相對 URL - 指向站點內的檔案(比如 src=https://blog.csdn.net/Megustas_JJC/article/details/”example.htm”)

例如,下面的表單擁有兩個輸入欄位以及一個提交按鈕,當提交表單時,周亮表單資料會提交到名為 “form_action.asp” 的頁面:

method為get,因此在servlet的doGet方法中對資訊進行獲取

請求引數亂碼的原因

URL編碼是一種瀏覽器用來打包表單輸入的格式。瀏覽器從表單中獲取所有的name和其中的值 ,愛爾蘭留學將它們以name/value引數編碼(移去那些不能傳送的字元,將資料排行等等)作為URL的一部分或者分離地發給伺服器。

這裡寫圖片描述

不同的請求方式對應不同的解決辦法:

post —- request.setCharacterEncoding(“客戶端編碼集”);

get亂碼手動解決
username=URLEncoder.encode(username, “ISO-8859-1”);// 用ISO編碼
username=URLDecoder.decode(username, “utf-8”); // 用utf-8解碼
簡化上面寫法 : username=new String(username.getBytes(“ISO-8859-1”), “utf-8”);

get亂碼 配置tomcat預設解碼字符集
在tomcat/conf/server.xml
Connector中 新增一個屬性 URIEncoding=”utf-8”

結論:開發時,儘量不要修改tomcat預設解碼集 ,提交請求請儘量使用post ,如果非要使用get ,手動編碼