Request對象
每當客戶端請求一個JSP頁面時,JSP引擎就會製造一個新的request對象來代表這個請求。
request對象提供了一系列方法來獲取HTTP頭信息,cookies,HTTP方法等等。
1.獲取請求參數
當通過超鏈接的形式發送請求時可以爲該請求傳遞參數,可以通過在超鏈接的後面加上問號“ ?”來實現
例如,發送一個請求到delete.jsp頁面並傳遞一個名爲“id”的參數,可以通過以下超鏈接實現:
<a href=" delete. jsp?id=1">刪除</a>
注意:在通過問號 “?” 指定請求參數時,參數值不需要使用引號括起。如果同時指定多個參數,各參數間使用與符號“&”分隔。
在delete.jsp頁面中可以通過request對象的getParameter()方法獲取傳遞的參數值,代碼如下:
<%
String id = request. getParameter( id") ;
%>
執行了getParameter()方法後變量id的值爲1。
2.獲取客戶端數據
通過request對象可以獲取客戶端的HTTP報頭信息、客戶信息提交方式,客戶端主機IP地址及端口號等。在客戶端獲取用戶請求相關信息的request對象的常用方法如下表所示:
3.應用request對象域
request對象可以視爲一個域,可以應用setAttribute()方法在域範圍內存放數據,其語法格式如下:
request. setAttribute (String name, 0bject object) ;
- name:變量名,爲String類型,轉發後的頁面獲取數據時通過這個變量名來獲取數據。
- object:指定需要在request範圍內傳遞的數據,爲Object類型。
在將數據保存在request範圍內的變量中後,可以通過request對象的getAttribute()方法獲取該變量值,其語法格式如下:
request. getAttribute (String name) ;
name爲變量名,在request範圍內有效。
補充:解決中文亂碼問題:
(1)獲取訪問請求參數時亂碼
當訪問請求參數爲中文時,通過request對象獲取的中文參數值爲亂碼,這是因爲該請求參數採用的ISO-8859-1 編碼不支持中文。
所以只有將獲取的數據通過String的構造方法使用UTF-8或GBK編碼重新構造一個String對象方可正確顯示中文。
例如,在獲取包括中文信息的參數user時可以使用下面的代碼:
String user = new String (request.getParameter ("user"). getBytes(" iso-8859-1"), "UTF-8") ;
(2)獲取表單提交的信息亂碼當獲取表單提交的信息時
通過request對象獲取的中文參數值爲亂碼,可以通過在page指令的下方加上調用request對象的setCharacterEncoding()方法將編碼設置爲UTF-8或GBK來解決。、
例如,在獲取包括中文信息的用戶名文本框(name屬性爲username)的值時,可以在獲取全部表單信息前加上下面的代碼:
<% request. setCharacterEncoding("UTF-8" ) ;%>
再通過下面的代碼獲取表單的值時,就不會產生中文亂碼:
String user = request.getParameter("username");