1、EL的语法
${expr}
Expr 可以是常量 “helloword”
变量
隐含对象
pageScope page
requestScope request
sessoinScope session
applicationScope application
2、[ ]与.运算符
EL 提供“.“和“[ ]“两种运算符来存取数据。
下列两者之间的关系是等价的:
如:${sessionScope.user.name} ${sessionScope.user[“name”]}
== eq 等于 != ne 不等于
gt 大于 < lt 小于 = ge 大于等于 <= le 小于等于
如果 要获取的属性名中包含有特殊字符“.” 只能用[] 方式获取
3、变量
EL存取变量数据的方法很简单,例如:${username}。它的意思是取出某一范围中名称为username的变量。
因为我们并没有指定哪一个范围的username,所以它会依序从Page、Request、Session、Application范围查找。
假如途中找到username,就直接回传,不再继续找下去,但是假如全部的范围都没有找到时,就回传null。
属性范围在EL中的名称
PageContext pageScope
Request requestScope
Session sessionScope
Application applicationScope
Parameter param 请求参数
EL 其他的隐含对象
跟范围相关 内置对象的属性范围
pageScope requestScope sessionScope applicationScope
跟请求参数相关的
param 返回一个
paramValues 返回相同属性名的数组 取数组中的值${ paramValues.username[0]}
Cookie 保存在本地硬盘 用跟踪客户的行为 包含跟cookie相关的信息
${cookie.JSESSIONID} 拿到的是session对象 ${cookie.JSESSIONID.value} key ---value
${cookie} 返回cookie中的 所有的内容
header headerValues 跟浏览器相关的信息
${header[“User-Agent”]} 返回的是一个浏览器的版本信息
initParam 获取web站点的环境参数(context-param) 指的就是
<context-param>
<param-name>hello</param-name>
<param-value>你好</param-value>
</context-param>
pageContext 获取跟页面相关的信息 url
${pageContext.request.remoteAddr}获取请求用户的ip
EL运算符
算数运算符 + - * / %
比较运算符 > gt <lt >=ge <=le ==eq !=ne
逻辑运算符 &&and ||or !not
其他的运算符 empty 判断是否为空 ${not empty a}
?:三目运算符 ${2>3 ? “aaa “:” bbb”}
() 改变优先级 ${2*(2+3)}
4、特别强调
1、注意当表达式根据名称引用这些对象之一时,返回的是相应的对象而不是相应的属性。例如:即使现有的 pageContext 属性包含某些其他值,${pageContext} 也返回 PageContext 对象。
2、注意<%@ page isELIgnored="true" %>表示是否禁用EL语言,TRUE表示禁止.FALSE表示不禁止.JSP2.0中默认的启用EL语言。
5、举例说明
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
${userlist} 含义:执行顺序为4 1 2 3。
“.”后面的只是一个字符串,并不是真正的内置对象,不能调用对象。
5、例如,<%=user.getAddr( ) %>等价于${user.addr},第一句前面的user,为一个变量。第二句后面user,必须为在某一个范围里的属性。