EL语言介绍
表达式语言(Expression Language)是一种简化的数据访问方式,使用EL可以方便的以标记格式访问JSP的隐含对象和JavaBean组件。它不是一种通用的程序语言,而只是数据访问语言。
EL包含11个内置对象
pageContext:代表该页面的 PageContext 对象,与JSP的 pageContext 对象相同
pageScope:用于获取 page 范围的属性值
requestScope:用于获取 request 范围的属性值
sessionScope:用于获取 sessionScope 范围的属性值
applicationScope:用于获取 applicationScope 范围的属性值
param:用于获取请求的参数值
paramValues:用于获取请求的参数值,数组
header:用于获取请求头的属性值
header:用于获取请求头的属性值,数组
initParam:用于获取 Web 应用的初始化参数
cookie:用于获取应用的 Cookie 值
在JSTL中,EL语言只能在属性值中使用。EL语言只能通过建立表达式${exp1}来进行调用。在属性值中使用表达式有三种方式。
1. value属性包含一个表达式
<some:tag value="${expr}"/>
在这种情况下,表达式值被计算出来并根据类型转换规则赋值给value属性。比如:<c:out value="${username}" />中的${username}就是一个EL,它相当于JSP语句<%=request.getAttribute("username")%>或<%=session.getAttribute("username")%>
2. value属性包含一个或多个属性,这些属性被文本分割或围绕
<some:tag value="some${expr}${expr}text${expr}"/>
在这种情况下,表达式从左到右进行计算,并将结果转换为字符串型(根据类型转换规则),并将结果赋值给value属性
3. value属性仅仅包含文本
<some:tag value="sometext"/>
在这种情况下,字符串型属性value将根据类型转换规则转换为标签所希望的类型。
EL语言的操作符
1. 存取器
为了获得集合中的属性,EL支持以下两种操作
1) 使用.操作符来获得有名字的属性。例如:表达式${user.username}表明对象user的username属性
2) 使用[]操作符来获得有名字或按数字排列的属性。例如:${user["username"]}
说明:表达式${user["username"]}和表达式${user. username }含义相同
表达式${row[0]} 表明row集合的第一个条目。
在这里user是一个类的对象,它的属性username必须符合标准JavaBean的规范,
即必须为username属性定义相应的getter、setter方法。
2. 操作符
算术运算符 +、-、*、/(或 div)和 %(或 mod)
关系运算符 ==(或 eq)、!=(或 ne)、<(或 lt)、>(或 gt)、<=(或 le)和 >=(或 ge)
逻辑运算符 &&(或 and)、||(或 or)和 !(或 not)
验证运算符 empty