在EL表達式中,無需創建就可以使用的對象稱之為EL隱藏(隱含、內置)對象。在EL中一共有11個隱藏對象,它們都與Map相似。其中10是Map,一個是 PageContext。
參數隱藏對象
這些隱藏對象都是Map類型!
1、param:param是Map<String,String>類型!param對象可以用來獲取參數,與request.getParameter()方法相同。
注意,在使用EL獲取參數時,如果參數不存在,返回的是空字符串,而不是null。這一點與使用request.getParameter()方法是不同的。
2、paramValues:paramValues是Map<String, String[]>類型,當一個參數名,對應多個參數值時可以使用它。
3、header:header是Map<String,String>類型,用來獲取請求頭。
4、headerValues:headerValues是Map<String,String[]>類型。當一個請求頭名稱,對應多個值時,使用該對象,這里就不在贅述。
5、initParam:initParam是Map<String,String>類型。它對應web.xml文件中的<context-param>參數。
6、cookie:cookie是Map<String,Cookie>類型,其中key是Cookie的名字,而值是Cookie對象本身。
域隱藏對象
使用EL表達式最為常用的就是獲取域對象中保存的數據。例如:${pageScope.xxx},表示獲取在pageContext保存的數據。當然${pageScope[‘xxx’]}是相同的!
7、pageScope:pageScope是Map<String,Object>類型,${pageScope.xxx}的功能相等與pageContext.getAttribute(“xxx”)。兩者的區別在於,前者在數據不存在時返回空字符串,而后者返回null。
8、requestScope:requestScope是Map<String, Object>類型,裝載了request對象中的所有數據;
9、sessionScope:sessionScope是Map<String, Object>類型,裝載了session對象中的所有數據;
10、applicationScope:applicationScope是Map<String, Object>類型,裝載了application對象中的所有數據;
當EL中給出的不是隱藏對象時,表示在四個域中查找數據。例如:${a},表示
l 在${pageScope.a}中查找,如果找到就返回;
l 在${requestScope}中查找,如果找到就返回;
l 在${sessionScope}中查找,如果找到就返回;
在${applicationScope}中查找,如果找到就返回,找不到就返回空字符串。
頁面上下文隱藏對象
11、pageContext:pageContext是PageContext類型!可以使用pageContext對象調用getXXX()方法,例如pageContext.getRequest,可以${pageContext.request}。
Expression |
說明 |
${pageContext.request.queryString} |
pageContext.getRequest().getQueryString(); |
${pageContext.request.requestURL} |
pageContext.getRequest().getRequestURL(); |
${pageContext.request.contextPath} |
pageContext.getRequest().getContextPath(); |
${pageContext.request.method} |
pageContext.getRequest().getMethod(); |
${pageContext.request.protocol} |
pageContext.getRequest().getProtocol(); |
${pageContext.request.remoteUser} |
pageContext.getRequest().getRemoteUser(); |
${pageContext.request.remoteAddr} |
pageContext.getRequest().getRemoteAddr(); |
${pageContext.session.new} |
pageContext.getSession().isNew(); |
${pageContext.session.id} |
pageContext.getSession().getId(); |
${pageContext.servletContext.serverInfo} |
pageContext.getServletContext().getServerInfo(); |
示例代碼:鏈接: http://pan.baidu.com/s/1mhPNoAc 密碼: b5s9