`

EL(Expression Language)

    博客分类:
  • JSP
El 
阅读更多

如果过去使用过JSTL,那么您可能已经熟悉了ELELJSTL 1.0规范中被引入,现在已经被合并到JSP规范中。并且,从JSP 2.0开始,JSP容器已经可以单独理解EL表达式。也就是说,有了EL,我们就可以不用在JSP页面上写繁琐的java表达式,让JSP看起来更加直观和清爽。那么,EL到底是一种什么样的语言呢?

 

其实,EL 是从 JavaScript 脚本语言得到启发的一种表达式语言,它借鉴了 JavaScript 多类型转换无关性的特点。在使用 EL scope 中得到参数时可以自动转换类型,因此对于类型的限制更加宽松。 举例说明:Web 服务器对于 request 请求参数通常会以 String 类型来发送,在得到时使用的 Java 语言脚本就应该是 request.getParameter(“XXX”) ,这样的话,对于实际应用还必须进行强制类型转换。而 EL 就将用户从这种类型转换的繁琐工作脱离出来,允许用户直接使用 EL 表达式取得的值,而不用关心它是什么类型。 还有,我们在运用MVC设计模式的时候,经常要从servlet导航到某个jsp,servlet里面,我们获取到一些动态的数据,并且将它们存放在某个特定的范围如request,session等。采用的方式为request.setAttribute(“username”, “leno”),那么,在jsp上获取username属性名对应的对象值时使用的Java 语言脚本就是request.getAttribute(“username”),如果取得的值为null,还得单独处理,而EL在对变量的null值处理上就显得非常人性化。下面我们来看看EL的语法:

 

一个EL表达式包含变量和操作符。任何存储在某个JSP作用范围(如:page requestsessionapplication)bean能被作为一个EL变量来使用。另外,EL支持以下预定义的变量:

变量名称
说明

pageScope
一个包含所有page scope范围的变量集合 (a java.util.Map)

requestScope
一个包含所有request scope范围的变量集合 (a java.util.Map)

sessionScope
一个包含所有session scope范围的变量集合 (a java.util.Map)

applicationScope
一个包含所有application scope范围的变量集合 (a java.util.Map)

param
一个包含所有请求参数的集合 (a java.util.Map),通过每个参数对应一个String值的方式赋值

paramValues
一个包含所有请求参数的集合 (a java.util.Map),通过每个参数对应一个String数组的方式赋值

header
一个包含所有请求的头信息的集合, (a java.util.Map) ,通过每个头信息对应一个String值的方式赋值

headerValues
一个包含所有请求的头信息的集合 (a java.util.Map) ,通过每个头信息的值都保存在一个String数组的方式赋值

cookie
一个包含所有请求的 cookie集合 (a java.util.Map)   通过每一个cookiejavax.servlet.http.Cookie)对应一个cookie值的方式赋值

initParam
一个包含所有应用程序初始化参数的集合(a java.util.Map) ,通过每个参数分别对应一个String值的方式赋值

pageContext
一个javax.servlet.jsp.PageContext类的实例, 用来提供访问不同的请求数据


操作符描述了你对变量所期望的操作。如果你之前曾经使用过任何编程语言的话,在EL表达式中所使用的操作符对你来说可能看起来很熟悉。因为它们和那些在大多数语言中所支持的操作符一样。

Operator
Description

.
访问一个bean属性或者 Map entry

[]
访问一个数组或者链表元素

()
对子表达式分组,用来改变赋值顺序

? :
条件语句,比如: 条件 ? ifTrue : ifFalse.如果条件为真,表达式值为前者,反之为后者

+
数学运算符,加操作

-
数学运算符,减操作或者对一个值取反

*
数学运算符,乘操作

/ or div
数学运算符,除操作

% or mod
数学运算符,模操作(取余)

== or eq
逻辑运算符,判断符号左右两端是否相等,如果相等返回true,否则返回false

!= or ne
逻辑运算符,判断符号左右两端是否不相等,如果不相等返回true,否则返回false

< or lt
逻辑运算符,判断符号左边是否小于右边,如果小于返回true,否则返回false

> or gt
逻辑运算符,判断符号左边是否大于右边,如果大于返回true,否则返回false

<= or le
逻辑运算符,判断符号左边是否小于或者等于右边,如果小于或者等于返回true,否则返回false

>= or ge
逻辑运算符,判断符号左边是否大于或者等于右边,如果大于或者等于返回true,否则返回false

&& or and
逻辑运算符,与操作赋。如果左右两边同为true返回true,否则返回false

|| or or
逻辑运算符,或操作赋。如果左右两边有任何一边为true返回true,否则返回false

! or not
逻辑运算符,非操作赋。如果对true取运算返回false,否则返回true

empty
用来对一个空变量值进行判断: null、一个空String、空数组、 Map、没有条目的Collection集合

func(args)
调用方法, func是方法名,args是参数,可以没有,或者有一个、多个参数.参数间用逗号隔开


一个EL表达式可以包含:数字、文本(在单引号或者双引号之间)、布尔值、null值。

因为一个EL表达式可以出现在静态文本出现的地方,因此你必须告诉JSP容器它应该被当作一个EL表达式来处理。你可以通过使用定界符来做到这一点。一个EL表达式总是以”${ }”来标记(一个“$”符号和一个左花括号,右花括号)。这里有一个EL表达式,它将一个命名为amount的变量加5

${amount + 5}

如果你想要将5加到一个beanproperty上,可以使用property访问操作符:

${order.amount + 5}

在当前这个指定的bean或者collection集合中,Property访问操作符(一个“.“符号)告诉EL去寻找名字为amountproperty

${order['amount'] + 5}

[]之间的值必须是一个property的名字(就像上面的例子中那样)或者是一个保存property名字的变量(或者是一个完整的EL子表达式)。

EL
表达式可以被用来赋值给任何标准的或者定制的JSP行为属性(action attribute),这些行为属性被标记为可以接受动态值(或者请求期间的属性值,就象它被正式调用一样):

<c:out value="${order.amount + 5}"/>

JSP 2.0之前,你不得不使用Java表达式去给一个属性动态赋值。在过去的很多年中,这已经成为语法混乱的一个普遍根源。

最后,EL表达式可以在页面中和模板直接混合使用。当你生成HTML并且需要设置一个动态值给一个属性的时候,这非常方便:

<input name="firstName" value="${customer.firstName}">

JSP 1.2
中,你不得不使用JSTL<c:out>来实现同样的事情,最后把各种不同类型的元素混合起来,这导致程序理解起来非常的困难:

<input name="firstName"

value="<c:out value="${customer.firstName}"/>" >


分享到:
评论

相关推荐

    EL(Expression Language).doc

    EL全名Expression Language EL 语法结构: ${ session.user.sex};所有EL都是以${为起始以}为结尾的; 上述语句等同于User user = (User)session.getAttribute(“user”);String sex=user.getSex(); 即在session中...

    EL(Expression Language)表达式(详解)

    EL 表达式的语法结构是 ${expression},其中 expression 可以是变量、常量、隐式对象等。EL 提供 . 和 [] 两种运算符来存取数据。当要存取的属性名称中包含一些特殊字符,如 . 或 ? 等非字母或数字的符号,就一定要...

    EL(Expression Language)表达式

    EL(Expression Language)表达式是JavaServer Pages (JSP)技术中的一个重要组成部分,它用于简化JSP页面中的数据访问和处理。EL表达式通常用`${ }`括起来,旨在替代复杂的Java脚本,使得HTML和JSP标签的交互更加...

    Expression Language 3.0新特性

    Expression Language(EL)是Java EE平台中的一个关键组件,它用于在JSP、JSF等Web应用程序中方便地访问和操作服务器端的数据。EL 3.0是该语言的一个重大更新,引入了许多新特性和改进,提升了开发人员的效率和代码...

    Laravel开发-laravel-expression-language

    Laravel Expression Language,简称EL,是Laravel中用于处理和解析PHP表达式的工具。它主要由`Illuminate\Database\Query\Expression`类和一系列辅助方法组成,这些方法允许我们在构建查询时插入原始SQL片段或表达式...

    Java Unified Expression Language.zip

    Java Unified Expression Language(EL)是Java EE平台中的一个重要组成部分,用于在JSP、JSF等Web应用程序中简洁、高效地表达动态内容。EL提供了一种简单的方式来访问JavaBeans或者其他Java对象的属性,使得开发者...

    EL标签的jar文件

    EL(Expression Language)标签是JavaServer Pages (JSP) 技术的一部分,它提供了一种简单的方式来访问和操作JavaBeans组件中的属性。EL表达式语言是JSP 2.0及更高版本中引入的一种强大而灵活的数据绑定工具,用于...

    jsp Expression Language

    **JSP Expression Language (EL)** 是JavaServer Pages(JSP)技术的一个重要组成部分,它提供了一种简洁的方式来在JSP页面中嵌入Java表达式,从而动态地输出数据。EL的引入大大简化了JSP页面的编写,使得开发者能够...

    EL表达式(expressionLanguage)在jsp中使用el表达式.emmx

    使用mindmaster打开

    javaWeb开发常JAR包

    4. **EL Expression Language JAR**: EL(Expression Language)是一种轻量级的脚本语言,用于在JSP页面中获取和设置JavaBean的属性,使得数据绑定更加便捷。 5. **JavaMail JAR**: 这个库用于在Java程序中发送和...

    EL表达式详解【全】

    EL表达式:expression language,即表达语言,它是为了便于存取数据而定义的一种语言,JSP2.0之后才成为一种标准。形式:以“${”开头,以“}”结尾,通过PAGE指令来说明是否支持EL表达式,具体举例: ; charset=GB...

    jsp EL 2.1技术文档

    **JavaServer™ Pages Expression Language (EL)**,即JSP表达式语言,是JSP规范的一部分,用于简化页面中的数据访问过程。EL 2.1版本作为EL语言的最新版本之一,为开发者提供了更强大的功能和更灵活的数据访问机制...

    Expression Language Specification

    从给定文件信息来看,标题和描述部分明确指出,这是一个关于“表达式语言规范(Expression Language Specification)”的文档,具体版本为3.0,并且是最终发布的版本。标题和描述中所提及的知识点如下: 1. **规范...

    javax.el-api.jar/javax.el.jar

    在Java世界中,EL(Expression Language)是一种强大的脚本语言,用于在JSP(JavaServer Pages)和其他Java EE组件中简化数据访问和方法调用。它允许开发者通过简洁的表达式来访问Java对象的属性和调用方法,而无需...

    el表达式教程,教你学会使用el表达式

    EL(Expression Language)是一种简洁的语言,用于在 JSP 中访问和操作数据。EL 表达式提供了简洁的语法来访问和操作数据,使得开发者可以更方便地在 JSP 中进行数据处理。 基本语法 EL 表达式的基本语法结构为 `$...

    JSP语法_Implicit_ExpressionLanguage_JSTL.pdf

    4. **EL Elements**:即Expression Language(表达式语言),它是JSP 2.0新增的功能,用于简化页面中的表达式书写,允许开发者更简洁地访问JavaBean属性。 #### 三、批注(Comments) 在JSP中,有两种类型的批注,...

Global site tag (gtag.js) - Google Analytics