EL表达式简单介绍和使用

EL表达式

为什么需要使用EL表达式

在早期的JSP中,为了实现与用户的动态交互,或者控制页面输出,需要在JSP页面中嵌入大量的java代码。另外在JSP中嵌入Java代码的方式访问JavaBean的属性时,需要调用该属性的getter方法。如果访问的属性时String类型或者其他的基本数据类型,可以比较方便的达到目的。但是如果该属性时另外一个JavaBean的对象,就需要多次调用getter方法,而且有时还需要做强制类型转换。。所以在JSP中嵌入Java代码容易导致结构复杂,使程序可读性差,不易维护。为了解决这些问题,JSP中引入了EL表达式。使用EL表达式后,代码可以进行大大的简化

什么是EL表达式

El表达式的全称是Expression Language,它是一种借鉴了JavaScript和XPath的表达式语言。EL表达式定义了一系列的隐含对象和操作符,使开发人员能够很方便地访问页面的上下文,以及不同作用域内的对象,而无须再JSP页面嵌入Java代码,从而使开发人员即使不熟悉Java也能轻松地编写JSP程序。

El表达式的特点和使用范围

EL表达式提供了在Java代码植物,访问和处理应用程序数据的功能,通常用于在某个作用域(page,request,session,application等)内取得属性值,或者做简单的运算和判断。EL表达式有以下的特点。
(1)自动转换类型。在使用EL得到某个数据时可以自动转换类型,对类型的限制比较宽松。
(2)使用简单。与JSP页面中嵌入的Java代码相比,EL表达式使用起来非常简单。

EL表达式的语法

了解什么是El表达式,以及EL表达式的应用特点和作用,下面具体介绍EL表达式的语法。
语法: E l 表 达 式 E l 表 达 式 的 语 法 有 两 个 要 素 : {El 表达式} El 表达式的语法有两个要素: ElEl 和{},两种缺一不可。

1.点操作符

EL 表达式通常由两部分组成:对象和属性。就像在Java代码中一样,在EL表达式中也可以用点操作符“.”来访问对象的某个属性。例如,通过 e m p l o y e e . c o m p u t e r 可 以 访 问 e m p l o y e e 对 象 的 c o m p u t e r 属 性 , 而 通 过 {employee.computer}可以访问employee对象的computer属性,而通过 employee.computer访employeecomputer{employee.computer.manufacturer}则可以访问某个雇员所使用的计算机生产厂商。

2.[]操作符

与点操作符类似,“[]”操作符也可以访问对象的某个属性,如 e m p l o y e e [ " c o m p u t e r " ] 可 以 访 问 雇 员 的 计 算 机 属 性 。 但 是 , 除 此 之 外 , “ [ ] ” 操 作 符 还 提 供 了 更 加 强 大 的 功 能 。 当 属 性 名 中 包 含 了 特 殊 字 符 如 ‘ . ’ 或 “ − ” 等 的 情 况 下 , 就 不 能 使 用 点 操 作 符 来 访 问 , 这 时 只 能 用 “ [ ] ” 操 作 符 。 访 问 数 组 , 如 果 有 一 个 对 象 名 为 a r r a y 的 数 组 , 那 么 可 以 根 据 索 引 值 来 访 问 其 中 的 元 素 , 如 {employee["computer"]}可以访问雇员的计算机属性。但是,除此之外,“[]”操作符还提供了更加强大的功能。 当属性名中包含了特殊字符如‘.’或“-”等的情况下,就不能使用点操作符来访问,这时只能用“[]”操作符。 访问数组,如果有一个对象名为array的数组,那么可以根据索引值来访问其中的元素,如 employee["computer"]访[].使访[]访array访{array[0],KaTeX parse error: Expected 'EOF', got '}' at position 9: array[1]}̲等。 ‘[]’操作符中可以…{employee[propertyName]},propertyName是另一个变量,改变其值可以动态访问emloyee的不同属性。
示例:

<body>
<%
	Map names=new HashMap();
	names.put("one","LiYang");
	names.put("two","WangHua");
	request.setAttribute("names",names);
%>


姓名:${names.one}
姓名:${names["two"]}
</body>

3.关系操作符

在El表达式中,有六个关系操作符如8-1.

关系操作符说明示例结果
== 或 eq等于 23 = = 5 或 {23==5}或 23==5{23 eq 5} ${“a”==“a”}或{“a” eq “a”}false true
!= 或ne不等于 23 ! = 5 或 {23!=5}或 23!=5{23 ne 5}true
<或lt小于 23 < 5 或 {23<5} 或 23<5{23 lt 5}false
>或gt大于 23 > 5 或 {23>5} 或 23>5{23 gt 5}true
<=或 le小于等于 23 < = 5 或 {23<=5}或 23<=5{23 le 5}false
>=或ge大于等于 23 > = 5 或 {23>=5}或 23>=5{23 ge 5}true

4.逻辑操作符

在EL中有三个逻辑操作符,如表

逻辑操作符说明示例结果
&&或and逻辑与如果A为true,B为false,则KaTeX parse error: Expected '}', got '&' at position 3: {A&̲&B} 或{A and B}false
或or逻辑或如果A为true,B为false 则 A B 或 {A B} 或 AB{A or B}true
! 或 not逻辑非如果A为true,则 ! A 或 {!A} 或 !A{not A}false

5.Empty操作符

Empty操作符是一个前缀操作符,用于检测一个变量值是否为null 或者为empty(如长度为0的字符串变量或集合变量)。例如,变量a不存在,则 e m p t y a 返 回 的 结 果 为 t r u e , {empty a}返回的结果为true, emptyatrue{not empty a}或${! empty a}返回的结果为false。

表达式隐式对象

JSP提供了page,requset,session,application,pageContext等若干隐式对象。这些隐式对象无须声明,就可以很方便地在JSP页面中使用。相应地,在EL表达式语言也提供了一系列可以直接使用的隐式对象。EL隐式对象按照使用途径的不同分为作用域访问对象,参数访问对象和JSP隐式对象。

在这里插入图片描述

1.作用域访问对象

开发Java Web应用时,可以把变量存放在不同作用域中以满足不同范围的访问需求,作用域共有四个选项:page requset session application。在EL表达式中为了访问这四个作用域内的变量和属性,提供了四个作用域访问对象。

对象名称说明
pageScope与页面作用域(page)中的属性相关联的Map类
requsetScope与请求作用域(requset)中的属性相关联的Map类
sessionScope与会话作用域(session)中的属性相关联的Map类
applicationScope与应用程序作用域(application)中的属性相关联的Map类

当使用El表达式访问某个变量时,应该指定查找的范围,如 r e q u s e t S c o p e . e m p l o y e e 即 在 请 求 作 用 域 范 围 内 查 找 e m p l o y e e 变 量 。 如 果 不 指 定 查 找 范 围 , 即 {requsetScope.employee}即在请求作用域范围内查找employee变量。如果不指定查找范围,即 requsetScope.employeeemployee{employee},则会按照page-requset-session-application的顺序依次查找employee变量。

2.参数访问对象

参数访问对象是与页面输入参数有关的隐式对象,通过它们可以得到用户的请求参数。参数访问对象的内容如下。

对象名称说明
param按照参数名访问单一请求值的Map对象
paramValues按照参数名称访问数组请求值的Map对象

两者之间的不同之处在于,param对象用于得到请求中单一名称的参数,而paramValues对象用于得到请求中的多个值。例如,在用户注册时,通常只填写一个名为userName的参数,那么就可以用 p a r a m . u s e r N a m e 来 访 问 此 参 数 , 等 同 于 调 用 R e q u e s t . g e t P a r a m t e r ( " u s e r n a m e " ) ; 而 在 用 户 注 册 时 , 也 可 以 选 择 多 个 业 余 爱 好 , 这 样 通 过 {param.userName}来访问此参数,等同于调用Request.getParamter("username");而在用户注册时,也可以选择多个业余爱好,这样通过 param.userName访Request.getParamter("username");{paramValues.habits}可以得到用户选择的值,等同于调用request.getParamterValues(“habits”)。

3.JSP隐式对象

为了能够方便访问JSP隐式对象,EL表达式语言引入了pageContext,如下,它是JSP和EL的一个公共对象,通过pageContext可以访问其它八个JSP内置对象(request,response等),这也是EL表达式语言把它作为内置对象的一个主要原因。
JSP隐式对象

对象名称说明
pageContext提供对页面信息和JSP内置对象的访问,语法如${pageContext.requset.contextPath}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值