JSP 內置對象 request對象 及 中文亂碼問題

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");

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章