7.1 EL 概述

优质
小牛编辑
127浏览
2023-12-01


     EL是Expression Language(表达式语言)的英文缩写。EL最初是在JSTL(JSP Standard Tag Library)1.0中定义的。有了EL,使得网页设计人员无需精通更复杂的编程语言(如Java)就可以访问和操作应用程序数据。为了使EL更加成功,Sun公司从JSTL1.1开始将EL从JSTL中剥离出来,使其成为JSP2.0规范的单独的一部分,并为EL增加了很多新的功能。

     EL表达式是一种被设计用来满足表现层需求的语言,基本语法格式为“${表达式}”。当JSP引擎在翻译JSP页面的过程中遇到“${表达式}”这样的字符串时,JSP引擎就会将“${...}”中的内容提取出来作为EL表达式来处理。“${表达式}”中的表达式必须符合EL的语法,该语法具有如下特点:

1. 在EL表达式中可以直接引用Java变量,并且可以通过嵌套属性的方式访问Java对象中的属性,如下面的代码如下:

<jsp:useBean id="date" class="java.util.Date"/>

<!--  访问date变量  -->

${date}

<jsp:useBean id="myBean" class="chapter6.MyBean"/>

<jsp:setProperty property="age" name = "myBean" value="20" />

<!--  通过嵌套属性方式访问myBean对象的age属性  -->

${myBean.age} 

2. 在EL表达式中可以执行基本的关系运算、逻辑运算、算术运算、条件运算,并且可以使用empty操作符。下面的EL表达式输出的结果为15.0:

${(4+5) * 20 / 12}

3. 在EL表达式中可以使用自定义函数来完成一些更复杂的工作。EL表达式的自定义函数由Java语言编写。实际上,一个自定义函数就是一个Java类的静态方法。如下面的EL表达式调用了一个自定义函数:

${fun:invoke("abcd")}

其中fun是invoke所在类的别名,invoke是自定义函数名,"abcd"是传递给自定义函数的参数。

4. 在EL表达式中提供了一系列的内置对象,如pageContext、requestScope等,通过这些内置对象,EL表达式可以访问JSP页面中的各种信息。如通过requestScope对象可以请求域中的属性信息。如果不使用EL表达式,要获得这些信息必须在JSP页面中编写复杂的Java代码。

5. EL表达式的语法非常宽松,尽量提供默认值和类型转换,以使得尽可能少地输出错误信息。

由于“${”是EL表达式的开始标记,因此,JSP引擎不会直接输出这个字符串。要想将“${”直接输出到客户端,需要对“$”字符使用反斜杠“\”对“$”字符进行转义。如要输出“An expression is ${(4 + 5) * 20}”,可以使用如下的代码:

An expression is \${(4+5)*20}

如果“${”作为“${...}”内部的表达式,如可以使用如下的代码来输出“${”:

${"${"}(4+5)*20}