EL表达式中隐含对象小结

关于EL表达式的基础知识,可阅读《EL表达式学习小结》这篇文章,本文总结一些有关EL表达式中隐含对象的内容。

EL中的隐含对象,大概可以分为以下几类:

1、与范围有关的隐含对象

与范围有关的EL隐含对象包含以下四个:pageScope、requestScope、sessionScope、applicationScope,它们分别对应着JSP中的pageContext、request、session和application。在EL中,这四个隐含对象只能用来取得范围属性值,即getAttribute(),却不能用来取得其他相关信息。

例如:要取得session中存储的一个属性username的值,可以利用session.getAttribute("username")取得username的值。如果用EL表达式,则直接用${sessionScope.username}即可。

2、与输入有关的隐含对象

与输入有关的隐含对象有两个:param和paramValues,它们是EL中比较特别的隐含对象。它们的区别是,param用来获取单一数据,而paramValues用来获取一组数据。

例如:要取得用户的请求参数时,可以利用下面的方法:request.getParameter(name)、request.getParameterValues(name),在EL中可以使用param和paramValues来取得:${param.name}、${paramValues.name}。

例如下面的例子:

<%@ page contentType="text/html; charset=UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
 <body>
    <form action="SampleJsp.jsp">
    <input type="text" name="sampleValue" value="10">
    <input type="text" name="sampleValue" value="11">
    <input type="text" name="sampleValue" value="12">
    <input type="text" name="sampleSingleValue" value="SingleValue">
    <input type="submit" value="Submit">
    </form>
 </body>
</html>

在这个页面中定义了两组控件,sampleValue是一组控件数组,sampleSingleValue是单一控件,那么通过EL在JSP中获取,则:

<%@ page contentType="text/html; charset=UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
 <body>
      ${paramValues.sampleValue[2]} <br>
      ${param.sampleSingleValue} <br>
 </body>
</html>

3、其他隐含对象

(1)cookie

JSTL并没有提供设定cookie的操作。如果要取得cookie中名为username的值,可以使用${cookie.username}。

(2)header和headerValues

header存储用户浏览器和服务器通信的数据,如果要取得用户浏览器的版本,可以使用${header["User-Agent"]},这里注意,由于User-Agent中有横杠这个特殊字符,所以不能用点(.)来导航取得,只能用[]。headerValues则是用来取得某个name的多个值,类似paramValues。

(3)initParam

initParam用来取得设置web站点的环境参数(Context上下文参数)。

一般获取环境中的参数,方法是:String userId = (String)application.getInitParameter("userId");如果换做EL表达式,则:${initParam.userId}。

(4)pageContext

pageContext取得其他有关用户要求或页面的详细信息。

EL表达式 说明
${pageContext.request.queryString} 取得请求的参数字符串
${pageContext.request.requestURL} 取得请求的URL,但不包括请求之参数字符串
${pageContext.request.contextPath} 服务的web application的名称
${pageContext.request.method} 取得HTTP的方法(GET、POST)
${pageContext.request.protocol} 取得使用的协议(HTTP/1.1、HTTP/1.0)
${pageContext.request.remoteUser} 取得用户名称
${pageContext.request.remoteAddr} 取得用户的IP地址
${pageContext.session.new} 判断session是否为新
${pageContext.session.id} 取得session的id
${pageContext.servletContext.serverInfo} 取得主机端的服务信息

本文标题:EL表达式中隐含对象小结

本文链接:http://yedward.net/?id=343

本文版权归作者所有,欢迎转载,转载请以文字链接的形式注明文章出处。

相关文章