1. 程式人生 > >EL的隱含對象(三)【訪問環境信息的隱含對象】

EL的隱含對象(三)【訪問環境信息的隱含對象】

遊泳 null img submit web應用 .cn 表達式 web.xml ans

EL中提供了6個訪問環境信息的隱含對象。分別是:

(1)param對象

param對象用於獲取請求參數的值,應用在參數值只有一個的情況。在應用param對象時,返回的結果為字符串。

例:在JSP頁面中,放置一個名稱為user的文本框。首先新建一個index.jsp頁面,關鍵代碼如下;

 1 <html>
 2     <head>
 3         <title>通過param對象訪問文本框中的name值</title>
 4     </head>
 5     <body>
 6         <form action
="index.jsp" method="post"> 7 <input type="text" name="name"/> 8 <input type="submit" value="提交"/> 9 </form> 10 獲取到的值是:${param.name}<br> 11 </body> 12 </html>

註意:如果name文本框中可以輸入中文,那麽在應用EL輸出其內容前,還需要應用“request.setCharacterEcoding("GB18030");”語句設置請求的編碼為支持中文的編碼,否則將產生亂碼。


(2)paramValues對象

當一個請求參數名對應多個值時,則需要使用paramValues對象獲取請求參數的值。在應用paramValues對象時,返回的結果是數組。

例:在JSP頁面中,放置一個名稱為affect的復選框組。關鍵代碼如下:

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"
> 4 <html> 5 <head> 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 7 <title>通過paramValues對象獲取組件值</title> 8 </head> 9 <body> 10 <form action="index_paramValues.jsp" method="post"> 11 <input type="checkbox" id="affect" name="affect" value="登山 ">登山 12 <input type="checkbox" id="affect" name="affect" value="遊泳 ">遊泳 13 <input type="checkbox" id="affect" name="affect" value="慢走 ">慢走 14 <input type="checkbox" id="affect" name="affect" value="晨跑 ">晨跑 15 <br><input type="submit" value="提交"> 16 17 </form> 18 <br> 19 <% request.setCharacterEncoding("UTF-8"); %> 20 <p> 21 <label>愛好為:</label> 22 ${ paramValues.affect[0] } 23 ${ paramValues.affect[1] } 24 ${ paramValues.affect[2] } 25 ${ paramValues.affect[3] } 26 </p> 27 </body> 28 </html>

運行結果是:

技術分享

註意:在應用param和paramValues對象時,如果指定的參數不存在,則返回空的字符串,而不是返回null。

(3)header和headerValues對象

header用於獲取HTTP請求的一個具體的header的值,但在有些情況下,可能存在同一個header擁有多個不同的值的情況,這時候就必須用到headerValues對象。

例:要獲取HTTP請求的header的connection(是否需要持久連接)屬性,可以應用如下代碼:

1 ${ header.connection }或 ${ header["connection"] }

以上代碼輸出如下結果:

技術分享

如果要獲取HTTP請求的header的user-agent屬性,則必須應用以下EL表達式:

${ header["user-agent"] }

輸出結果如下:

技術分享

(4)initParam對象

initParam對象用於獲取Web應用初始化參數的值

例:在Web應用的web.xml文件中設置一個初始化參數author,用於指定作者。

具體代碼如下:

index_initParam.jsp中的代碼

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 7 <title>initParam對象</title>
 8 </head>
 9 <body>
10     <label>現居住地:</label>
11     ${ initParam.address }
12 </body>
13 </html>

在web.xml文件中的</web-app>標記上方添加如下代碼:

1 <context-param>
2       <param-name>address</param-name>
3       <param-value>中國江蘇省常州市</param-value>
4   </context-param>

代碼運行結果如下:

技術分享

(5)cookie對象

EL中並沒有提供向cookie中保存值的方法,但是可以通過cookie隱含對象實現。如果在cookie中已經設置了一個名稱為username的值,那麽可以使用${cookie.username}來獲取該cookie對象。但是如果要獲取cookie中的值,需要使用cookie對象的value屬性。

例:使用response對象設置一個請求有效的cookie對象,然後再使用EL獲取該cookie對象的值。

代碼如下:

1  <%
2         Cookie cookie = new Cookie("user","mrbccd");
3         response.addCookie(cookie);
4     %>
5     ${ cookie.user.value }

運行上面代碼結果顯示:mrbccd

EL的隱含對象(三)【訪問環境信息的隱含對象】