程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> JSP編程 >> 關於JSP >> JSP詳細篇——EL表達式(二)

JSP詳細篇——EL表達式(二)

編輯:關於JSP

JSP詳細篇——EL表達式(二)


EL的隱含對象

為了能夠獲得Web應用中的是相關數據,EL提供了11個隱含對象,這些對象類似於JSP的內置對象,也是直接通過對象名進行操作。在EL的隱含對象中,除了PageContext是JavaBean對象,對應於javax.servlet.jsp.PageContext類型外,其他的隱含對象都對應於java.util.Map類型。這些隱含對象可以分為頁面上下文對象、訪問作用域范圍的隱含對象和訪問環境信息的隱含對象3種。下面分別進行詳細介紹。

1、頁面上下文對象

頁面上下文對象為pageContext,用於訪問JSP內置對象(request/response/out/session/exception和page,但是不能用於獲取application/config/pageContext)和servletContext。在獲取到這些內置對象後,就可以獲取其屬性。這些屬性與對象的getXXX()方法相對應,在使用時,去掉方法名中的get,並將首字母改為小寫即可。

訪問request對象

通過pageContext獲取JSP內置對象中的request對象,可以使用以下語句:

${pageContext.request}

獲取到request對象後,就可以通過該對象獲取與客戶端相關的信息。例如:HTTP報頭信息、客戶信息提交方式、客戶端IP地址和端口號等。

范例:

要訪問getServerPort()方法,可以使用以下的代碼:

${pageContext.request.serverPort}

以上代碼將返回端口號。

<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>

<%

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

My JSP 'request.jsp' starting page

${pageContext.request.serverName }

${pageContext.request.serverPort }

${pageContext.request.servletPath }

訪問response對象

通過pageContext獲取JSP內置對象中的response對象,可以使用下面的語句:

${pageContext.response}

范例:

<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>

<%

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

My JSP 'response.jsp' starting page

${pageContext.response.bufferSize }

${pageContext.response.characterEncoding }

訪問out對象

通過pageContext訪問out對象,使用以下語法:

${pageContext.out}

范例:

<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>

<%

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

My JSP 'out.jsp' starting page

${pageContext.out.bufferSize }

${pageContext.out.remaining}

訪問session對象

訪問session對象的語法格式為:

${pageContext.session}

范例:

<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>

<%

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

My JSP 'session.jsp' starting page

${pageContext.session.id }

訪問exception對象

通過pageContext獲取JSP內置對象的exception對象的語法個格式為:

${pageContext.exception}

范例:

<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>

<%

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

My JSP 'exception.jsp' starting page

${pageContext.exception.localizedMessage }

訪問page對象

通過pageContext訪問page對象的語法格式為:

${pageContext.page}

范例:

<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>

<%

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

My JSP 'page.jsp' starting page

${pageContext.page.class }

訪問servletContext對象

語法格式如下:

${pageContext.servletComtext}

范例:

<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>

<%

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

My JSP 'servletContext.jsp' starting page

${pageContext.servletContext.contextPath }

2、訪問作用域范圍的隱含對象

在EL中提供了4種用於訪問作用域范圍的隱含對象,即pageScope/requestScope/sessionScope/applicationScope。應用這4個隱含對象指定所要查找的標識符的作用域後,系統將不再按照默認的順序(page/request/session/application)來查找相應的標識符。他們與JSP中的page/request/session/application內置對象相似。不過,這4個隱含對象只能用於取得指定范圍內的屬性,而不能取得其他相關信息。

pageScope隱含對象

pageScope隱含對象用於返回包含page范圍的屬性值的集合,返回值為java.util.Map對象。

范例:

<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>

<%

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

My JSP 'pageScope.jsp' starting page

${pageScope.user.name }

requestScope隱含對象

requestScope隱含對象用於返回包含request范圍內的屬性的集合。返回值為java.util.Map對象。

范例:

<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>

<%

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

My JSP 'requestScope.jsp' starting page

${requestScope.user.name }

sesssionScope隱含對象

sessionScope隱含對象用於返回session范圍內的屬性值的集合。返回值為java.util.Map對象。

范例:

<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>

<%

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

My JSP 'sessionScope.jsp' starting page

${sessionScope.user.name }

applicationScope隱含對象

applicationScope隱含對象用於返回包含application范圍的屬性值的集合,返回值為java.util.Map對象

范例:

<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>

<%

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

My JSP 'applicationScope.jsp' starting page

${applicationScope.user.name }

3、訪問環境信息的隱含對象

在EL中提供了6個訪問環境信息的隱含對象。

A、param 對象

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

范例:

在JSP頁面中,放置一個名為user的文本框:

當表單提交後,要獲取name文本框的值,使用如下方式:

${param.name}

PS:

在name文本框中如果輸入了中文,那麼在使用EL輸出其內容的時候,要使用request.setCharacterEncoding(“GBK”);語句設置請求的編碼為支持中文的編碼,不然將出現亂碼。

B、paramValues對象

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

范例:

在JSP頁面中,放置一個名稱為affect的復選框。

登山

游泳

慢走

晨跑

當提交表單後,要獲取affect的值,可以使用下面的形式:

<%request.setCharacterEncoding(“UTF-8”);%>

愛好為:${paramValues.affect[0]}${paramValues.affect[1]}${paramValues.affect[2]}${paramValues.affect[3]}

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

C、header和headerValues對象

header對象用於獲取HTTP請求的一個具體的header的值,但是在有些情況下,可能竄在同一個header擁有多個不同的值的情況,這就要使用到headerValues對象

范例:

要獲取HTTP請求的header的connection屬性,可以使用如下形式:

${header.connection}或者${header[“connection]}

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

${header[“user-agent”]}

D、initParam對象

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

范例:

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

author

mr

運用EL表達式獲取參數author:

${initParam.author}

F、cookie對象

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

范例:

使用response對象設置一個請求有效的cookie對象,然後在使用EL獲取該cookie對象的值,可以使用以下代碼:

<%

Cookie cookie=new Cookie(“user”,”zhangsan”);

response.addCookie(cookie);

%>

${cookie.user.value}


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved