软件开发实训(720科技)――第七课:表达式语言

软件开发实训(720科技)――第七课:表达式语言

内容关键词:表达式,语言,运算

授课老师:张森鹏

一、知识笔记

JSP 2.0 最重要的特性之一就是表达式语言(EL),JSP 用户可以用它来访问应用程序数据。

由于受到 ECMAScript 和 XPath 表达式语言的启发,EL 也设计成可以轻松地编写免脚本的 JSP

页面。

表达式语言的重要性

JSP 2.0 最初是将 EL 应用在 JSP 标准标签库(JSTL)1.0 规范中。JSP 1.2 程序员将标准
库导入到他们的应用程序中,就可以使用 EL。JSP 2.0 及其更高版本的用户即使没有 JSTL,
也能使用 EL,但在许多应用程序中,还是需要 JSTL 的,因为它里面还包含了与 EL 无关的

其他标签。

语法

EL 表达式以 ${ 开头,并以 } 结束。EL 表达式的结构如下:
${expression}
#{expression}
例如,表达式 x+y,可以写成:
${x+y}

#{x+y}
$ {exp}和#{exp}结构都由 EL 引擎以相同的方式进行计算。然而,当 EL 未被用作独立引

擎而是使用诸如 JSF 或 JSP 的底层技术时,该技术可以不同地解释构造。

关键字

和其他语言一样,关键字一样不能作为标识符

以下是关键字

and     eq    gt    true    instanceof

or        ne    le    false    empty

not      lt     ge    null      div            mod 

运算符

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

${header.host}

取值规则

取值方法如下:
(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)。
(7)如果 value-a 不是一个 Map、List 或者 array,那么,value-a 必须是一个 JavaBean。
在这种情况下,必须强制 value-b 为 String。如果 value-b 是 value-a 的一个可读属性,则要调
用该属性的 getter 方法,从中返回值。如果 getter 方法抛出异常,该表达式就是无效的,否则,

该表达式有效。

二、重要记录

1、对于一系列的表达式,它们的取值将是从左到右进行,计算结果的类型为 String,并且连接在一起。

2、如果对象的属性碰巧返回带有属性的另一个对象,既可以用[ ],也可以用. 运算符来访问第二个对象的属性。

3、利用隐式对象 paramValues 可以获取一个请求参数的多个值。这个对象表示一个包含所有请求参数,并以参数名称作为 key 的 Map。

4、隐式对象 header 表示一个包含所有请求标题的 Map。为了获取 header 值,要利用 header名称作为 key。

5、与 head 不同的是,隐式对象 headerValues 返回的 Map 返回的是一个字符串数组。


参考资料:《Spring MVC学习指南》

猜你喜欢

转载自blog.csdn.net/xy123456789123/article/details/80245409