官术网_书友最值得收藏!

4.2 request對象

request對象主要用于接收客戶端通過HTTP協議連接傳輸到服務器端的數據。在客戶端的請求中如果有參數,則該對象就有一個參數列表,它通常是HttpServletRequest的子類,其作用域就是一次request請求。

4.2.1 request對象常用方法

request對象包括很多方法,它的主要方法及對應的說明如表4-2所示。

表4-2 request對象的主要方法

4.2.2 request對象應用實例

request對象包括很多方法,其中最主要的有getParameter(String name)、getParameterValues(String name)、getParameterNames()等方法,下面通過實例分別加以說明。

1. String getParameter(String name)

用表單和超鏈接、<jsp:param>傳遞參數的時候,使用getParameter(String name)接收傳遞的參數。

返回給定參數的值,當傳遞給此方法的參數名沒有實際參數與之對應時,返回null。

使用getParameter(String name)取得的值都是字符串類型,需要轉換為需要的類型。

【例4-1】request對象應用實例。在requestInfo.jsp頁面中輸入用戶名和密碼,在showInfo.jsp頁面中將輸入的用戶名和密碼顯示出來。

requestInfo.jsp頁面的代碼如下:

     <%@ page contentType="text/html; charset=GBK"%>
     <html>
     <head>
     <title>使用Request對象</title>
     </head>
     <body bgcolor="#ffc7c7">
     <form name="form1" method="post" action="showInfo.jsp">
     <p align="center">用戶名:<input type="text" name="username"></p>
     <p align="center">密 &nbsp;碼 :<input type="password" name="password">
     </p>
     <p align="center"><input type="submit" name="Submit" value="提交">
     &nbsp; &nbsp; <input name="cancel" type="reset" id="cancel" value="取消">
     </p>
     </form>
     </body>
     </html>

showInfo.jsp頁面的代碼如下:

在這個實例中,requestInfo.jsp頁面將表單中用戶輸入的信息提交給showInfo.jsp頁面,showInfo.jsp頁面利用getParameterNames()和getParameter(String name)這兩個方法獲取表單中傳過來的參數名稱和參數值。程序運行結果如圖4-1和圖4-2所示。

圖4-1 requestInfo.jsp頁面運行結果

圖4-2 showInfo.jsp頁面運行結果

通常客戶端向服務器端提交數據的時候,有多種數據提交機制,最常用的就是get方法和post方法。get傳送的數據量較小,不能大于2KB。get是把參數數據隊列加到提交表單的action屬性所指的URL中,值和表單內各個字段一一對應,在URL中可以看到;post傳送的數據量較大,一般被默認為不受限制。post是通過http post機制,將表單內各個字段與其內容放置在html header內一起傳送到action屬性所指的URL地址,但用戶看不到這個過程。這兩種方式的參數都可以用request來獲得。

本例中采用post來提交數據,有兩種方法可以使客戶端通過get方法來提交數據。

(1)如直接在瀏覽器中輸入地址來獲取JSP文件,則默認使用的提交方法是get方法:

     http://localhost:8080/ch04/request/requestInfo.jsp

如果此時有數據傳遞給服務器,則可以采用以下方法:

     http://localhost:8080/ch04/request/requestInfo.jsp?name1=value1$name2=value2...

從上面可以看到,通過get方法傳遞數據的時候,只要將需要傳遞的數值放在URL地址后面,之間通過?隔開。這種方法多用在超級鏈接中,當傳遞數據較少的時候,可以直接通過鏈接來傳遞數據。

(2)get方法提交表單數據。

如把【例4-1】requestInfo.jsp中的<form name="form1" method="post" action="showInfo.jsp">的post改為get,在輸入數據提交的時候地址欄中顯示http://localhost:8080/ch04/request/showInfo.jsp?username=majianhong&password=123&Submit=%CC%E1%BD%BB。其中,Submit后面的數據是該按鈕的顯示值,因為經過了編碼,所以顯示的是各種符號。從地址鏈接可以看到,通過get方法提交數據,會將所有數據都放在URL地址后面,當表單數據比較多的時候,會顯得很難看。通過get方法提交,會將一些隱藏信息顯示出來,比如密碼password=123。

其實通過表單傳遞參數,采用getParameter(String name)接受傳遞參數的實例在第3章已經介紹過,如【例3-6】。

通過表單輸入數據的代碼如下:

     <form action="dec-method.jsp" method="get" name="form">
     <input  type="text" name="radius">
     <input type="submit" name="submit"  value="開始計算">
     </form>

通過

     String str = request.getParameter("radius");

得到輸入數據。

由于使用getParameter(String name)取得的值都是字符串類型,所以采用代碼

     double r;
     r = Double.parseDouble(str);

來轉換數據類型。

由于在傳遞參數時,在表單中采用的方法method="get",此時運行如下程序會發現在地址欄中顯示所輸入的數據:

     http://localhost:8080/ch04/Script/dec-method.jsp?radius=3

如果在頁面中采用超級鏈接的方法,使用如下代碼:

     <a href="dec-method.jsp?radius=3">超級鏈接傳遞參數</a>

那么得到此超級鏈接所傳遞的參數,同樣也可采用以下方法:

     String str = request.getParameter("radius");

采用超級鏈接所傳遞的參數也是采用getParameter(String name)取得值。

通過<jsp:param>傳遞參數,同樣使用getParameter(String name)接收傳遞的參數。

2. Enumeration getParameterNames()

返回值類型:枚舉類型Enumeration。

得到客戶端提交的所有參數的名稱。

如【例4-1】中的通過循環可獲取客戶端提交的所有參數的名稱:

3. void setCharacterEncoding(String chaen)

在form表單中采用post方式提交請求時,需要設置request對象的編碼方式,保證能夠正確地取到數據。例如:

     <%request.setCharacterEncoding("gb2312");%>

關于解決漢字亂碼問題將在6.5.2節介紹。

4. String [] getParameterValues(String name)

使用getParameterValues()能夠取出變量的多個值,返回值類型為字符串數組String[]。

主要用于獲取復選框的值或是下拉列表帶multiple屬性的值。

【例4-2】讀取復選框數據。在hobby.html頁面中選中多個選項,在hobbyInfo.jsp頁面中將所選內容顯示出來。

hobby.html頁面的代碼如下:

hobbyInfo.jsp頁面的代碼如下:

程序運行結果如圖4-3和圖4-4所示。

圖4-3 hobby.html頁面運行結果

圖4-4 hobbyInfo.jsp頁面運行結果

【例4-3】讀取帶multiple屬性的下拉列表中的數據。在city.html頁面中選中多個下拉列表選項,在cityInfo.jsp頁面中將所選內容顯示出來。

city.html頁面的代碼如下:

cityInfo.jsp頁面的代碼如下:

程序運行結果如圖4-5和圖4-6所示。

圖4-5 city.html頁面運行結果

圖4-6 cityInfo.jsp頁面運行結果

【例4-4】在request.jsp中利用request對象的一些方法,回顯系統信息。

request.jsp頁面的代碼如下:

程序運行結果如圖4-7所示。

圖4-7 request.jsp回顯系統信息

主站蜘蛛池模板: 和硕县| 大厂| 房山区| 兴安盟| 竹北市| 洞口县| 翁牛特旗| 开平市| 曲沃县| 澄迈县| 晋城| 文昌市| 梁河县| 河间市| 德州市| 武胜县| 南涧| 恩平市| 江油市| 若尔盖县| 共和县| 盈江县| 中宁县| 镇安县| 凤山县| 扎囊县| 连州市| 湖南省| 乐陵市| 平原县| 芦溪县| 乡宁县| 海城市| 镇巴县| 韶山市| 凉山| 祁东县| 房产| 铜梁县| 平舆县| 治多县|