EL表达式

1.1、EL简介
EL全名为Expression Language,它原本是JSTL1.0为方便存取数据所定义的语言,当时EL只能在JSTL标签中使用。
到JSP2.0之后,EL已经正式成为标准规范之一。因此,只要支持Servlet2.4/JSP2.0的容器,都可以在JSP网页中直接使用EL。
1.2、EL语法
所有的EL都是以${为起始标记,以}为结束标记的。
1.2.1、“.”与“[]”运算符
EL提供.和[]两种运算符来获取数据。下列两者所代表的意思是一样的:
  ${sessionScope.user.sex}    等同于  ${sessionScope.user[“sex”]}
“.”和“[ ]”也可以混合使用,如下:
  ${sessionScope.shoppingCart[0].price}  回传结果为shoppingCart中第一件商品的价格。
不过,以下两种情况,两者会有差异:
1)当要存取的属性名称中包含有一些特殊字符;2)${sessionScope.user[data]};当data是一个变量,就等于${sessionScope.user.sex};当data值为“name”时,就等于${sessionScope.user.name}。
因此,如果要动态取值就要用[ ]。但是。无法做到动态取值。
1.2.2、EL变量
EL存取变量数据的方法很简单,例如:${username}。它的意思是取出某一范围中名称为username的变量。取出顺序为page、request、session、application范围。如果没有找到,就回传null。
属性范围 在EL中的名称
page pageScope
request requestScope
session sessionScope
application applicationScope
1.2.3、自动类型转换
EL接受输入参数:${param.count+20}
1.2.4、EL保留字
And Eq gt true
instanceof Or ne le
false Empty not lt
Ge Null div mod
1.3、EL隐含对象
隐含对象 说明
pageContext 表示此JSP的pageContext
pageScope 取得page范围的属性名称所对应的值
requestScope 取得request范围的属性名称所对应的值
sessionScope 取得session范围的属性名称所对应的值
applicationScope 取得application范围的属性名称所对应的值
param 如同request.getParameter(String name)。回传String类型的值
paramValues 如同request.getParameterValues(String name)。回传String[]类型的值
header 如同request.getHeader(String name)。回传String类型的值
headerValues 如同request.getHeaders(String name)。回传String[]类型的值
cookie 如同request.getCookies()
initParam 如同ServletContext.getInitParameter(String name)。回传String类型的值
1.4、属性与范围
与范围有关的EL隐含对象包含以下四个:pageScope、requestScope、sessionScope和applicationScope,它们基本和JSP的pageContext、request、session和application一样。不过必须注意的是,这四个隐含对象只能用来取得范围属性的值,即JSP中的getAttribute(String name),却不能取得其它相关信息。
1.5、与输入有关的隐含对象
与输入有关的隐含对象有两个:param和paramValues,它们是EL中比较特别的隐含对象。一般而言,在JSP中取得用户的请求参数时,可以利用下列方法:request.getParameter(String name)和request.getParameterValues(String name),在EL中可以使用param和paramValues两者取得数据。
1.6、其他隐含对象
cookie、header和headerValues、initParam、pageContext
1.7、EL算术运算符
算数运算符 说明 范例 结果
+ 加 ${17+5} 22
- 减 ${17-5} 12
* 乘 ${17*5} 85
/或div 除 ${17/5} 3.4
%或mod 余数 ${17%5} 2
1.8、EL关系运算符
关系运算符 说明 范例 结果
==或eq 等于 ${5==5}或${5 eq 5} true
!=或ne 不等于 ${5!=5}或${5 ne 5} false
<或lt 小于 ${3 <5}或${3 lt 5} true
>或gt 大于 ${3>5}或${3 gt 5} false
<=或le 小于等于 ${3 <=5}或${3 le 5} true
>=或ge 大于等于 ${3>=5}或${3 ge 5} false
1.9、EL逻辑运算符
逻辑运算符 说明 范例 结果
&&或and 与 ${true && false} true/false
||或or 或 ${true || false} true/false
!或not 非 ${!true} true/false
1.10、EL其他运算符
Empty运算符主要用来判断值是否为null或空,如:${empty param.name}
条件运算符:${A?B:C}
括号运算符:${A*(B+C)}
1.11、EL自定义函数
语法:ns:function(arg1,arg2……argN)
ns为前置名称,它必须和taglib指令的前置名称一致。如:
<%@ taglib prefix=“my” uri=“http://www.sun.com”%>  或  ${my:function(param.name)}
function为EL函数的名称。类中定义必须是公开静态方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值