關於請求引數的型別和獲取請求引數方法
一. 首先先來區分以下三個引數
request.getParameter()
request.getInputStream()
request.getReader()
根據表單提供提交資料的引數不同,而請求引數方法也不同
enctype=application/x- www-form-urlencoded
這種編碼方式是預設的編碼方式。編碼後的結果通常是field1=value2&field2=value2&… 的形式,如 name=aaaa&password=bbbb。
通常使用的表單也是採用這種方式編碼的,Servlet 的 API 提供了對這種 編碼方式解碼的支援,只需要呼叫 ServletRequest 類中的 getParameter()方法就可以得到使用者表單中的欄位和資料。
不足:
這種編碼方式( application/x-www-form-urlencoded )雖然簡單,但對於傳輸大塊的二進位制資料顯得力不從心。
對於傳輸大塊的二進位制數這類資料,瀏覽器採用了另一種編碼方式,即 “multipart/form-data” 的編碼方式:
瀏覽器可以很容易將表單內的資料和檔案放在一起傳送。這種編碼方式先定義好一個不可能在資料中出現的字串作為 分界符,然後用它將各個資料段分開,而對於每個資料段都對應著 HTML 頁面表單中的一個 Input 區,包括一個 content-disposition 屬性,說明了這個資料段的一些資訊,如果這個資料段的內容是一個檔案,還會有 Content-Type 屬性,然後就是資料本身,如果以這種方式提交資料就要用request.getInputStream()或request.getReader()得到 提交的資料,用 request.getParameter()是得不到提交的資料的。
二.我們再瞭解一下關於jquery中的請求
var params={ ajaxurlwithparam:"createmail2.do",
method:"POST",
data:{uname:uname,password:password,passwordconf:passwordconf,mobile:mobile,verifycode:verifycode,domain:domain,version:version}
};
regresult=ajaxRequest(params );
//function.js
function ajaxRequest(params){
.....
$.ajax({
type : method,
url : ajaxurl,
async : ifasync,
data : data,
dataType : 'json', //
success : function(result) {
re=result;
}
});
return re;
}
注意:jQuery 中的datatype 指的是預期伺服器返回的資料型別。
三.瞭解一下Content-type
MediaType,即是Internet Media Type,網際網路媒體型別;也叫做MIME型別,在Http協議訊息頭中,使用Content-Type來表示具體請求中的媒體型別資訊。
常見的媒體格式型別如下:
- text/html : HTML格式
- text/plain :純文字格式
- text/xml : XML格式
- image/gif :gif圖片格式
- image/jpeg :jpg圖片格式
image/png:png圖片格式
以application開頭的媒體格式型別:
- application/xhtml+xml :XHTML格式
- application/xml : XML資料格式
- application/atom+xml :Atom XML聚合格式
- application/json : JSON資料格式
- application/pdf :pdf格式
- application/msword : Word文件格式
- application/octet-stream : 二進位制流資料(如常見的檔案下載)
- application/x-www-form-urlencoded : 中預設的encType,form表單資料被編碼為key/value格式傳送到伺服器(表單預設的提交資料的格式)
另外一種常見的媒體格式是上傳檔案之時使用的:
- multipart/form-data : 需要在表單中進行檔案上傳時,就需要使用該格式