JSP EL表达式详细介绍(jsp el表达式 if)速看

随心笔谈2年前发布 admin
190 0 0

文章摘要

这篇文章主要介绍了JSP编程中与页面范围相关的上下文和隐式对象,以及如何通过表达式访问这些对象。 1. **JSP的上下文**:可以访问JSP的隐式对象,如`response`(响应对象)、`servletContext`(ServletContext)、`output`(输出对象)等。例如, `${pageContext.response}` 可以为页面的响应对象赋值。 2. **隐式对象**: - `param`:将请求参数映射到单个字符串值。 - `paramValues`:将请求参数映射到数值数组。 - `header`:将请求头映射到单个字符串值。 - `headerValues`:将请求头映射到数值数组。 - `cookie`:将cookie名称映射到值。 - `initParam`:将上下文初始化参数映射到值。 3. **页面范围(Page Scope)**: - `pageScope`:允许访问页面范围的变量,例如 `${pageScope.objectName.attributeName}`。 - `requestScope`:允许访问请求范围的变量。 - `sessionScope`:允许访问会话范围的变量。 - `applicationScope`:允许访问应用程序范围的变量。 4. **访问顺序**:使用`$`符号时,EL表达式会按照4(applicationScope)、1(sessionScope)、2(requestScope)、3(pageScope)的顺序查找变量。 5. **注意事项**: - `响应对象`的赋值不会覆盖页面范围中的其他值。 - EL表达式中的`.`只是一个字符串标识符,不是真正的对象。 这篇文章通过实例详细解释了这些概念,适合刚开始学习JSP的开发者参考。



pageContext

JSP 页的上下文。它可以用于访问 JSP 隐式对象,如请求、响应、会话、输出、servletContext 等。例如,${pageContext.response} 为页面的响应对象赋值。

此外,还提供几个隐式对象,允许对以下对象进行简易访问:

术语
定义

param

将请求参数名称映射到单个字符串参数值(通过调用 ServletRequest.getParameter (String name) 获得)。getParameter (String) 方法返回带有特定名称的参数。表达式 $(param.name) 相当于 request.getParameter (name)。

paramValues

将请求参数名称映射到一个数值数组(通过调用 ServletRequest.getParameter (String name) 获得)。它与 param 隐式对象非常类似,但它检索一个字符串数组而不是单个值。表达式 ${paramvalues.name) 相当于 request.getParamterValues(name)。

header

将请求头名称映射到单个字符串头值(通过调用 ServletRequest.getHeader(String name) 获得)。表达式 ${header.name} 相当于 request.getHeader(name)。

headerValues

将请求头名称映射到一个数值数组(通过调用 ServletRequest.getHeaders(String) 获得)。它与头隐式对象非常类似。表达式 ${headerValues.name} 相当于 request.getHeaderValues(name)。

cookie
将 cookie 名称映射到单个 cookie 对象。向服务器发出的客户端请求可以获得一个或多个 cookie。表达式 ${cookie.name.value} 返回带有特定名称的第一个 cookie 值。如果请求包含多个同名的 cookie,则应该使用 ${headerValues.name} 表达式。

initParam
将上下文初始化参数名称映射到单个值(通过调用 ServletContext.getInitparameter(String name) 获得)。

除了上述两种类型的隐式对象之外,还有些对象允许访问多种范围的变量,如 Web 上下文、会话、请求、页面:

术语
定义

pageScope

将页面范围的变量名称映射到其值。例如,EL 表达式可以使用 ${pageScope.objectName} 访问一个 JSP 中页面范围的对象,还可以使用 ${pageScope.objectName.attributeName} 访问对象的属性。

requestScope

将请求范围的变量名称映射到其值。该对象允许访问请求对象的属性。例如,EL 表达式可以使用 ${requestScope.objectName} 访问一个 JSP 请求范围的对象,还可以使用 ${requestScope.objectName.attributeName} 访问对象的属性。

sessionScope

将会话范围的变量名称映射到其值。该对象允许访问会话对象的属性。例如:

$sessionScope.name} 

applicationScope

将应用程序范围的变量名称映射到其值。该隐式对象允许访问应用程序范围的对象。

1、注意当表达式根据名称引用这些对象之一时,返回的是相应的对象而不是相应的属性。例如:即使现有的 pageContext 属性包含某些其他值,${pageContext} 也返回 PageContext 对象。

2、 注意 <%@ page isELIgnored=”true” %> 表示是否禁用EL语言,TRUE表示禁止.FALSE表示不禁止.JSP2.0中默认的启用EL语言。

1、例如,

      < %=request.getParameter(“username”)% >       等价于       ${ param.username }

2、例如,但是下面的那句EL语言可以完成如果得到一个username为空,则不显示null,而是不显示值。

  <%=user.getAddr( ) %>      等价于     ${user.addr}。

3、例如:

<%=request.getAttribute(“userlist”) %>     等价于$     { requestScope.userlist }

4、例如,原理如上例3。

${ sessionScope.userlist } 1

${ sessionScope.userlist } 2

${ applicationScope.userlist } 3 

${ pageScope.userlist } 4

${uselist} 含义:执行顺序为4 1 2 3。

“.”后面的只是一个字符串,并不是真正的内置对象,不能调用对象。

4、例如,

   <%=user.getAddr( ) %>      等价于     ${user.addr}

   第一句前面的user,为一个变量。

   第二句后面user,必须为在某一个范围里的属性。

© 版权声明

相关文章