EL表达式
Expression Language
EL语法
El语法简单,使用方便
${……} ---> ${expression}
例:${sessionScope.user.sex}
A、EL提供.和[] 存取数据
${sessionScope.user.sex} 和 ${sessionScope.user[“sex”]} 等同
也可以这样使用:${ sessionScope.shoppingCart[0].price}
注意:
1、 当要存取的属性名称中包含一些特殊字符,如. 或 – 等并非字母或数字的符号,就一定要使用 [ ],如,${user.my-name}就应该改为${user[“my-name”]}
2、 ${sessionScope.user[data]} ,如果是要动态取值则应使用[],
此时,data 是一个变量,假若data的值为"sex"时,那上述的例子等于${sessionScope.user.sex};假若data 的值为"name"时,它就等于${sessionScope.user.name}。因此,如果要动态取值时,就可以用上述的方法来做,但 . 无法做到动态取值。
EL 存取变量数据的方法很简单,例如:${username}。它的意思是取出某一范围中名称为username的变量。因为我们并没有指定哪一个范围的username,所以它的默认值会先从Page 范围找,假如找不到,再依序到Request、Session、Application范围。假如途中找到username,就直接回传,不再继续找下去,但是假如全部的范围都没有找到时,就回传null
属性范围 在EL 中的名称
Page PageScope
Request RequestScope
Session SessionScope
Application ApplicationScope
其中,pageScope、requestScope、sessionScope和applicationScope都是EL 的隐含对象,由它们的名称可以很容易猜出它们所代表的意思,例如:${sessionScope.username}是取出Session范围的username 变量。
B、自动转换类型
C、EL的保留字
and eq gt true
or ne le false
no lt ge null
instanceof empty div mod
所谓保留字的意思是指变量在命名时,应该避开上述的名字,以免程序编译时发生错误。
EL隐含对象 11个
隐含对象 类型 说 明
PageContext javax.servlet.ServletContext 表示此JSP 的PageContext
PageScope java.util.Map 取得Page范围的属性名称所对应的值
RequestScope java.util.Map 取得Request 范围的属性名称所对应的值
sessionScope java.util.Map 取得Session 范围的属性名称所对应的值
applicationScope java.util.Map 取得Application 范围的属性名称所对应的值
param java.util.Map 如同ServletRequest.getParameter(String
name)。回传String 类型的值
paramValues java.util.Map 如同ServletRequest.getParameterValues(String
name)。回传String []类型的值
header java.util.Map 如同ServletRequest.getHeader(String name)。回传String 类型的值
headerValues java.util.Map 如同ServletRequest.getHeaders(String name)。回传String []类型的值
cookie java.util.Map 如同HttpServletRequest.getCookies( )
initParam java.util.Map 如同ServletContext.getInitParameter(String name)。回传String 类型的值
特别强调:
1、注意当表达式根据名称引用这些对象之一时,返回的是相应的对象而不是相应的属性。
例如:即使现有的 pageContext 属性包含某些其他值,${pageContext} 也返回
PageContext 对象。
2、注意 <%@ page isELIgnored="true" %> 表示是否禁用EL语言,TRUE表示禁止.FALSE
表示不禁止.JSP2.0中默认的启用EL语言。
jsp EL 中的有效表达式:
有效表达式可以包含文字、操作符、变量(对象引用)、函数调用。
文字
Boolean true和false
Integer 可以包含任何正数或负数,例如 24、-45、567
Float 可以包含任何正的或负的浮点数,例如 -1.8E-45、4.567
String 任何由单引号或双引号限定的字符串。对于单引号、双引号和反斜杠,使
用反斜杠字符作为转义序列。必须注意,如果在字符串两端使用双引号,则
单引号不需要转义
Null null
算术符
+、-(二元)、*、/、div、%、mod、-(一元)
and、&&、or、||、!、not
==、eq、!=、ne、、gt、<=、le、>=、ge。可以与其他值进行比较,或与布尔型、字符串型、整型或浮点型文字进行比较
空操作符是前缀操作,可用于确定值是否为空
条件型 A ?B :C。根据 A 赋值的结果来赋值 B 或 C