EL表达式(Expression Language表达式语言)
主要作用是产生无脚本的JSP页面,即产生无Java代码的JSP页面。
1.在页面中输出内如:
${express }
获取request的参数:
${param.username }
JavaBean也可以使用:
${bean.attribute }
从Session中获取数据:
${sessionScope.username }
2、操作符
JSP 表达式语言提供以下操作符,其中大部分是 Java 中常用的操作符:
例:
${1 + 2 * 3 } 结果为7
特殊运算符:
EL提供了.和[]两种运算符存取数据。
${sessionScope.user.username }
${sessionScope.user["username"] }
必须使用特殊运算符的情况:
① 当要存取的属性名称包含特殊字符,如.或-时,就只能使用[],例如:
${user["user-name"] }
② 当需要动态取值时,使用[]
${user["attributeName"] }
3、隐式对象
JSP 表达式语言定义了一组隐式对象,其中许多对象在 JSP scriplet 和表达式中可用:
除了上述两种类型的隐式对象之外,还有些对象允许访问多种范围的变量,如 Web 上下文、会话、请求、页面:
注意:
1、注意当表达式根据名称引用这些对象之一时,返回的是相应的对象而不是相应的属性。例如:即使现有的 pageContext 属性包含某些其他值,${pageContext} 也返回 PageContext 对象。
2、 注意 <%@ page isELIgnored=”true” %> 表示是否禁用EL语言,TRUE表示禁止.FALSE表示不禁止.JSP2.0中默认的启用EL语言。
4.EL表达式查找顺序:
${username } 默认从Page范围找,如果找不到再从Request,Session,Application范围找,最后如果都找不到则返回null。
例子:
1、例如,
< %=request. getParameter(“username”)% > 等价于 ${ param. username }
2、例如,但是下面的那句EL语言可以完成如果得到一个username为空,则不显示null,而是不显示值。
<%=user.getAddr( ) %> 等价于 ${user.addr}。
3、例如:
<%=request.getAttribute(“userlist”) %> 等价于$ { requestScope.userlist }
4、例如,原理如上例3。
${requestScope.userlist} 1
${sessionScope.userlist} 2
${applicationScope.userlist} 3
${pageScope.userlist} 4
${uselist} 含义:执行顺序为4 1 2 3。
“.”后面的只是一个字符串,并不是真正的内置对象,不能调用对象。
4、例如,
<%=user.getAddr( ) %> 等价于 ${user.addr}
第一句前面的user,为一个变量。
第二句后面user,必须为在某一个范围里的属性。