EL表达式
什么是EL表达式
EL(Expression Language):是JSP 2.0增加的技术规范,表达式语言的灵感来自于 ECMAScript 和 XPath 表达式语言,它提供了在 JSP 中简化表达式的方法,让Jsp的代码更加简化,。
JSP中使用Java脚本的局限:
在JSP页面中嵌入大量的Java代码,访问结构比较复杂的数据时代码烦琐,且经常需要强制类型转换。
EL 特点
自动转换类型:
在 JSP EL 表达式内可以使用整型数、浮点数、字符串、常量 true、false 以及 null。
EL得到某个数据时可以自动转换类型。
EL 语法
${ EL expression}
在EL表达式中,如果属性值为首字母大写,则需要将首字母进行小写书写。属性内部大写没有影响。
- 通过变量名取值
- 获取对象的属性值
- 获取集合元素
- 执行表达式
作用域
按照page → request → session → application的作用域顺序依次查找,找到即返回,最终找不到返回null。
属性范围 | EL中的名称 |
---|---|
page | pageScope,例如${pageScope.username} 表示在page作用域查找变量username,找不到返回null |
request | requestScope |
session | sessionScope |
application | applicationScope |
[ ]与.运算符
EL 提供.和[]两种运算符来存取数据。
当要存取的属性名称中包含一些特殊字符,如.或?等并非字母或数字的符号,就一定要使用 []。例如:{user.My-Name}
应当改为{user["My-Name"] }
如果要动态取值时,就可以用[]来做,而.无法做到动态取值。例如:${sessionScope.user[data]}
中data 是一个变量
没有指定哪一个范围的username,所以它会依序从Page、Request、Session、Application范围查找。
注意 <%@ page isELIgnored="true" %>
表示是否禁用EL语言,TRUE表示禁止.FALSE表示不禁止.JSP2.0中默认的启用EL语言。
EL表达式
执行表达式
关系操作符
关系操作符 | 说明 | 示例 | 结果 |
---|---|---|---|
==(或eq) | 等于 |
${23==5} 或${23 eq 5} ${"a" =="a"} 或${"a" eq "a"}
|
false true |
!=(或ne) | 不等于 |
${23!=5} 或${23 ne 5}
|
true |
<(或lt) | 小于 |
${23<5} 或${23 lt 5}
|
false |
>(或gt) | 大于 |
${23>5} 或${23 gt 5}
|
true |
<=(或le) | 小于等于 |
${23<=5} 或${23 le 5}
|
false |
>=(或ge) | 大于等于 |
${23>=5} 或${23 ge 5}
|
ture |
逻辑操作符
逻辑操作符 | 说明 | 示例 | 结果 |
---|---|---|---|
&&(或and) | 逻辑与 | 如果A为true,B为false,则${ A && B } (或${ A and B } ) |
false |
||(或or) | 逻辑或 | 如果A为true,B为false,则${ A || B} (或 ${ A or B } ) |
true |
! (或not) | 逻辑非 | 如果A为true,则${ ! A } ( 或${ not A } ) |
false |
Empty操作符
若变量 a为null,或长度为零的String,或size为零的集合
则${ empty a }
返回的结果为true${ not empty a }
或${ ! empty a }
返回的结果为false
EL隐式对象
EL隐式对象分类
隐式对象:
- 作用域访问对象
- pageScope
- requestScope
- sessionScope
- applicationScope
- 参数访问对象
- param
- paramValues
- JSP隐式对象
- pageContext
EL隐式对象介绍
对象名称 | 说 明 |
---|---|
pageScope | 与page作用域相关联的Map对象 |
requestScope | 与request作用域相关联的Map对象 |
sessionScope | 与session作用域相关联的Map对象 |
applicationScope | 与application作用域相关联的Map对象 |
param | 按照请求参数名称返回单一值的Map对象 |
paramValues | 按照请求参数名称返回String数组的Map对象 |
pageContext | 提供对页面信息和JSP内置对象的访问 |
JSTL
为什么使用JSTL
EL表达式封装了数据访问的功能,而JSTL标签库则封装了逻辑控制、循环控制以及数据格式化等功能,二者结合使用才能完整实现动态页面的开发需求。
什么是JSTL?
Java server pages standarded tag library,即 JSP标准标签库 。
JSTL的优点:
- 提供一组标准标签库
- 可用于编写各种动态功能
JSTL通常会与EL表达式合作实现JSP页面的编码。
基础标签
c:out
<c:out value="<string>" default="<string>" escapeXml="<true|false>"/>
c:out
标签有如下属性: