24.EL表达式

EL 简介

EL 全名为 Expressi on Language,表达式语言,(它仅仅是表达式)。
EL表达式的功能:

  • 获取4个内置对象(域)中的数据,或自定义对象中的数据,或数组、集合容器中的数据。可以完成非常简单的运行,但它不能完成循环、复杂的判断等功能。
    EL表达式的书写格式
  • ${ 表达式 }

EL表达式的底层是我们前面学的jsp中的各种对象与方法的操作,只是做了一些优化;有一个很大的优化就是如果找不到数据的话不会返回null或者报异常,而是什么都不显示。

EL变量

EL 获取变量数据的方法很简单,例如:${ username} 。它的意思是取出某一范围中名称为 username 的变量。因为我们并没有指定哪一个范围的 username,所以它的默认值会先从 Page 范围找,假如找不到,再依序到 Request 、Session、Application 范围。假如途中找到 username,就直接回传,不再继续找下去,但是假如全部的范围都没有找到时,就回传 null。

获取域对象中的数据

格式1: ${xxxxScope.key}
使用el表达式从不同的域中取出数据,需要使用el中的4个内置对象搞定:pageScope、requestScope、sessionScope、applicationScope
在4个el内置对象pageScope取出保存的数据时,相当于使用pageContext.getAttribute(key,scope)取值。
格式2: ${key}
如果不知道数据在哪个范围中,这时可以不用指定范围直接书写key值即可 ${key}
在这里插入图片描述

  • EL表达式只可以从四大域中获取数据,但不可以存放数据
  • EL表达式中的内容会显示到浏览器上
  • 使用pageContext的getAttribute方法或者findAttribute方法从4个范围中取出数据的时候,
  • 如果指定的key不存在会返回null,而使用el表达式取出的时候指定的key不存在,页面上什么都不会显示
. 与 [ ] 运算符

EL 提供 . 和 [ ] 两种运算符来存取数据。下列两者所代表的意思是一样的:
${user. sex}等于${user[ “sex”] },

不过,以下情况,两者会有差异:
当要存取的属性名称中包含一些特殊字符,如 . 或 – 等并非字母或数字的符号,就一定要使用 [ ] ,例如:
${ user. My- Name }
上述是不正确的方式,应当改为:
${ user[ “My- Name”] }

获取复杂数据

复杂数据是指:数组,集合,自定义对象。
演示EL获取数组中的值:
在这里插入图片描述
在这里插入图片描述

  • ${arr1}相当于直接调用arr数组对象的toString方法,因为数组中没有重写toString方法所以会显示地址
  • ${arr1[3]} 如果在java中则会报索引越界的异常,但在EL表达式中做了优化,获取不到的数据什么都不会显示
    演示EL获取List集合中的值:

在这里插入图片描述在这里插入图片描述

${list1}相当于直接调用list集合对象的toString方法,因为集合中重写了toString方法所以会显示集合的元素
演示EL获取Map集合中的值:
在这里插入图片描述
在这里插入图片描述

向map中存放数据map.put(“ccc.ddd.fff”,333),取出整个集合 m a p 1 可 以 显 示 这 个 数 据 元 素 , 但 单 独 从 m a p 中 取 出 数 据 {map1}可以显示这个数据元素,但单独从map中取出数据 map1map{map1.ccc.ddd.fff}这种格式则无法显示数据元素,所以使用第二种格式${map1[‘ccc.ddd.fff’]}则可以显示数据.

演示EL获取自定义对象属性值:

首先需要在项目中创建一个自定义的对象,创建User对象。并且针对User对象中的属性提供相应的get和set方法。

  • 1.在使用EL表达式取出数组,集合,自定义对象中的数据的时候,能够使用.的地方都可以使用中括号。特别是在map集合或者自定义对象中key值或自定义对的属性名中包含多个字符的时候必须使用中括号搞定。
  • 2.在EL表达式中,获取对象的属性的值的时候,其实不是在看这个对象所在的类是否有这个属性,只要这个对象所在的类中有getXxxxx方法,就可以使用EL表达式获取Xxxx值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我超爱写bug

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值