request的請求引數獲取方式

奮鬥的小青年_發表於2017-04-23

一、只適用於GET

 

getQueryString()

只適用於GET,比如客戶端傳送http://localhost/testServlet?a=b&c=d&e=f,通過request.getQueryString()得到的是a=b&c=d&e=f

 

二、共用

1getParameter()

GETPOST都可以用。

 

POST的情況下還要判斷form表單的資料提交方式來確定是否能用

 

1、當編碼方式是(application/x-www-form-urlencoded)的情況下才能使用,這種編碼方式雖然簡單,但是當傳輸二進位制大塊資料的時候就力不從心。

 

2、對於傳輸大塊的二進位制數這類資料,瀏覽器採用了另一種編碼方式("multipart/form-data"),這時就需要使用下面的兩種方法.

2getInputStream()

3getReader()

注:方式2)和3)一般用於POST方式獲取請求引數

 

4)注意

1request.getParameter()、request.getInputStream()、request.getReader()這三種方法是有衝突的,因為流只能被讀一次。

form表單採用的是(application/x-www-form-urlencoded)編碼時,先通過request.getParameter()方法獲得引數後,再呼叫getInputStream()或者getReader()就得不到流中的內容了。因為在呼叫getParameter()方式的時候,系統已經對提交的流的資料讀取過一次了,反之亦然。

 

2、如果form提交資料的編碼方式採用的是("multipart/form-data"),那麼呼叫request.getParameter()方法是獲取不到內容的,所以這時仍然可以呼叫request.getInputStream()request.getReader()方式來讀取,沒有衝突。但是如果如果呼叫過request.getInputStream()request.getReader()中的任意一個,另一個就不能呼叫了。

 

3、request.getInputStream()和request.getReader()在同一個響應中是不能混合使用的,如果混合使用就會拋異常

相關文章