2024年4月19日发(作者:)

JSP2.0技术手册

第六章 Expression Language

6-1 EL简介

6-1 EL简介

EL全名为Expression Language,它原本是JSTL 1.0为方便存取数据所自定义的语言。当时EL

只能在JSTL标签中使用,如下:

程序执行结果为10。但是你却不能直接在JSP网页中使用:

Hi ! ${ username }

到了JSP 2.0之后,EL已经正式纳入成为标准规范之一。因此,只要是支持Servlet 2.4 / JSP

2.0的Container,就都可以在JSP网页中直接使用EL了。

除了JSP 2.0建议使用EL之外,JavaServer Faces( JSR-127 ) 也考虑将EL纳入规范,由此

可知,EL如今已经是一项成熟、标准的技术。

注意

假若您所用的Container只支持Servlet 2.3/JSP 1.2,如:Tomcat 4.1.29,您就不能在

JSP网页中直接使用EL,必须安装支持Servlet 2.4 / JSP 2.0的Container。

6-2 EL语法

EL语法很简单,它最大的特点就是使用上很方便。接下来介绍EL主要的语法结构:

${}

所有EL都是以 ${ 为起始、以} 为结尾的。上述EL范例的意思是:从Session的范围中,取得

用户的性别。假若依照之前JSP Scriptlet的写法如下:

User user = (User)ribute("user");

String sex = ( );

Java爱好者 制作

JSP2.0技术手册

两者相比较之下,可以发现EL的语法比传统JSP Scriptlet更为方便、简洁。

6-2-1 .与 [ ] 运算符

EL提供 . 和 [ ] 两种运算符来存取数据。下列两者所代表的意思是一样的:

${}

等于

${["sex"]}

. 和 [ ] 也可以同时混合使用,如下:

${ngCart[0].price}

回传结果为shoppingCart中第一项物品的价格。

不过,以下两种情况,两者会有差异:

(1) 当要存取的属性名称中包含一些特殊字符,如 . 或 – 等并非字母或数字的符号,就一定

要使用 [ ],例如:

${-Name }

上述是不正确的方式,应当改为:

${user["My-Name"] }

(2) 我们来考虑下列情况:

${[data]}

此时,data是一个变量,假若data的值为"sex"时,那上述的例子等于${};

假若data的值为"name"时,它就等于${}。因此,如果要动态取值时,就可以

用上述的方法来做,但 . 无法做到动态取值。

接下来,我们更详细地来讨论一些情况,首先假设有一个EL: