EL表达式

       EL, Expression Language,表达式语言,是一种在JSP页面中获取数据的简单方式。EL表达式是从JSP2.0版本开始才引入的概念。
       EL表达式的基本语法形式很简单:在JSP页面的任何静态部分均可通过${expression}的形式获取到指定表达式的值。

1.获取数据。

1.1从四大域中依次查找数据

        EL只能从pageConext、request、session、 application 四大域属性空间中获取数据。其查找数据的顺序是,依次按照由小到大的范围从四大域中查找指定名称的属性值。

如:${属性名}

1.2 从指定域中获取数据

        从pageContext依次查找到application 域空间,会降低执行效率。若某属性确定存放在某个域属性空间,则可指定直接从该空间中查找。此时需要借助EL的四个域属性空间相关的内置对象。

pageScope从page范围域属性空间中查找指定的key
requestScope从request范围域属性空间中查找指定的key
sessionScope从session范围域属性空间中查找指定的key
applicationScope从application范围域属性空间中查找指定的key

 

如:${pageScope.属性名}

1.3 访问bean中的属性

两种方式:

1)${属性名.属性}    

2)${属性名['属性']}

注意:访问对象为null的属性时,EL表达式不会报空指针异常的错误

1.4访问数组
 

        只能以下标的方式访问:${属性名[下标]}
        需要注意的是,若数组中不存在该指定索引的元素,系统并不会抛出数组越界异常。
 

1.5访问List

        与获取数组中的元素相同,通过${属性名[索引} 的方式可以获取List 中指定索引的元素。
若List中不存在该指定索引的元素,系统并不会抛出越界异常。

注意:el表达式不能访问set,因为set中没有索引的概念

1.6访问Map

${属性名.key}   

2.EL表达式的运算符

EL表达式可以进行各种运算,其中常用的运算符有: 


除了上述运算符外,还有一个非常有用的运算符empty,其用法为${empty 变量},结果为布尔值。
若变量未定义,则返回值为true
若变量为String 类型,且其值为空串,则返回值为true
若变量为引用类型,且其值为null,则返回值为true。
若变量为集合和数组类型,且其不包含任何元素,则返回值为true. 

3.EL 内置对象

就像JSP的Java代码块及表达式块中可以使用九个内置对象一样,EL 表达式中,同样也存在有内置对象,并且存在11个内置对象。常用的内置对象,除了前面使用过的四个域
属性空间相关的内置对象外,还有如下几个。
(1) pageContext
该pageContext与JSP内置对象中的pageContext是同一个对象。通过该对象,可以获取到request、response、 session、 servletContext、 servletConfig 等对象。注意,这些对象在EL中不是内置对象。这些对象只能通过pageContext 获取。在EL中直接${pageContext.request}即可获取request对象。当然,其底层实际调用的是
pageContext.getRequest()方法。同理,也可以通过类似方式获取到其它对象。在这些获取的对象中,有一个是实际工程中最常用的: 
${pageContext.request.contextPath},用于获取当前项目的发布到服务器的名称。一般会用在JSP页面的路径前。
<form action="${pageContext . request. contextPath }/register. do" method="POST">
<!--......-->
</form>
注意:在EL的11个内置对象中,除了pageContext外,其它10个内置对象,其类型均为java.util.Map类型。

(2)param

(3)paramValues

(4)initParam

总结:

EL不能出现在Java代码块、表达式块等JSP 的动态代码部分。
EL只能从pageConext、reqyest、 session、 application 四大域属性空间中获取数据。
EL不会抛出空指针异常。若访问一个null对象的属性,则什么也不显示。
EL不会抛出数组访问越界异常。若访问一个数组中的不存在的元素,则什么也不显示。
EL不具有对字符串进行处理的能力,就连简单的字符串拼接都不行。
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值