软件开发实训(720)3.0

内容关键词:表达式语言

授课老师:720张森鹏

知识笔记:JSP 2.0 最重要的特性之一就是表达式语言(EL),JSP 用户可以用它来访问应用程序数据。
由于受到 ECMAScript 和 XPath 表达式语言的启发,EL 也设计成可以轻松地编写免脚本的 JSP

页面。也就是说,页面不使用任何 JSP 声明、表达式或者 scriptlet。JSP 2.0 最初是将 EL 应用在 JSP 标准标签库(JSTL)1.0 规范中。JSP 1.2 程序员将标准库导入到他们的应用程序中,就可以使用 EL。

表达式语言用法:两个表达式可以连接在一起。对于一系列的表达式,它们的取值将是从左到右进行,计
算结果的类型为 String,并且连接在一起。假如 a+b 等于 8,c+d 等于 10,那么这两个表达式
的计算结果将是 810:
${a+b}${c+d}
表达式${a+b}and${c+d}的取值结果则是 8and10。
如果在定制标签的属性值中使用 EL 表达式,那么该表达式的取值结果字符串将会强制
变成该属性需要的类型:
<my:tag someAttribute="${expression}"/>
像${这样的字符顺序就表示是一个 EL 表达式的开头。如果需要的只是文本${,则需要在

它前面加一个转义符,如\${。

EL 表达式可以返回任意类型的值。如果 EL 表达式的结果是一个带有属性的对象,则可以利
用[ ]或者.运算符来访问该属性。[ ]和.运算符类似;[ ]是比较规范的形式,.运算符则比较快捷。
为了访问对象的属性,可以使用以下任意一种形式:
${object["propertyName"]}
${object.propertyName}
但是,如果 propertyName 不是有效的 Java 变量名,只能使用[ ]运算符。例如,下面这两
个 EL 表达式就可以用来访问隐式对象标题中的 HTTP 标题 host:
${header["host"]}
${header.host}
但是,要想访问 accept-language 标题,只能使用[ ]运算符,因为 accept-language 不是一

个合法的 Java 变量名。如果用. 运算符访问它,将会导致异常。

EL 表达式的取值是从左到右进行的。对于 expr-a[expr-b]形式的表达式,其 EL 表达式的取值方法如下:
(1)先计算 expr-a 得到 value-a。
(2)如果 value-a 为 null,则返回 null。
(3)然后计算 expr-b 得到 value-b。
(4)如果 value-b 为 null,则返回 null。
(5)如果 value-a 为 java.util.Map,则会查看 value-b 是否为 Map 中的一个 key。若是,则
返回 value-a.get(value-b),若不是,则返回 null。
(6)如果 value-a 为 java.util.List,或者假如它是一个 array,则要进行以下处理:
a.强制 value-b 为 int,如果强制失败,则抛出异常。
b.如果 value-a.get(value-b)抛出 IndexOutOfBoundsException,或者假如 Array.get
(value-a, value-b)抛出 ArrayIndexOutOfBoundsException,则返回 null。
c.否则,若 value-a 是个 List,则返回 value-a.get(value-b);若 value-a 是个 array,
则返回 Array.get(value-a, value-b)。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值