EL的隱含對象(三)【訪問環境信息的隱含對象】
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的隱含對象(三)【訪問環境信息的隱含對象】