EL表达式
Posted penguin1024
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了EL表达式相关的知识,希望对你有一定的参考价值。
EL 表达式
EL,Expression Language,表达式语言,是一种在 JSP 页面中获取数据的简单方式。
EL表达式是从 JSP2.0 版本开始才引入的概念。
EL 表达式的基本语法形式很简单:在 JSP 页面的任何静态部分均可通过 ${expression} 的形式获取到指定表达式的值。
运行结果:
原因:
EL 只能从 pageConext、request、session、application 四大域属性空间中获取数据。以上方式是无法获取到指定数据的。因为这个数据没有存放在四大域属性空间中。
此时,可以将这个值存放到四大域属性空间中的任意一个中。然后访问其存放时的 key即可。
如上图示: 将 username 值 存放在 四大域中的任意一个域中,使用 EL表达式 ,都能够正常访问到数据
结果:
获取数据
结果:
(1 ) 从四大域中 依次查找
无论是将变量存放到了哪一个域属性空间,通过${key}的方式,均可访问到该数据的值。EL 到底是从哪个域空间中查找指定的 key 的呢?
其底层实际是从最小范围依次查找,直到查找到最大范围 application。这期间,只要查找到了,则直接获取,后面的域空间将不再查找。若最终没有查找到,则什么也不输出。
(2 ) 从指定 域中获取数据 (EL的内置对象)
从 pageContext 依次查找到 application 域空间,会降低执行效率。
若某属性确定存放在某个域属性空间,则可指定直接从该空间中查找。
此时需要借助 EL 的四个域属性空间相关的内置对象 (EL中的内置对象 有11个,下面的只是其中的4个)
(3 ) 问 访问 Bean
EL 可以通过 ${key.属性} 的方式获取到指定对象的指定属性值。其底层实际调用的是该对象的相应属性的 get 方法。
当然,也可以使用${key[‘属性’]或${key[“属性”]的方式获取。该方式不常用。
注意: 若访问 为null的的对象的属性,EL是不会抛出空指针异常的。其仅仅是 不显示而已。
演示:
Student类中再添加一个成员变量 School 学校
定义一个School类 ,定义一个 address属性。get/set方法 自行完善
将Student中的相应的 有参方法 进行完善
demo.jsp中:
结果:
回顾: 成员变量 和 属性的区别!!
通常情况下,成员 变量和 属性 是在程序中是同一个东西。但是,也有不同的时候。
属性的定义: 指的是get/set方法名,去掉get/set后,首字母小写 之后的名字 就是属性名。
访问数组
结果:
在EL表达式中,若访问的数组元素超出了数组下标上限,EL不会抛出越界异常。
再来个稍微复杂点的例子: (School类中 有sname 属性 和 address属性)
结果:
访问List
结果:
注意: 在EL可以通过 索引访问List,但无法访问Set。 因为在Set中,没有索引这个概念。
访问 Map
结果:
运算符
EL 表达式可以进行各种运算,其中常用的运算符有
除了上述运算符外,还有一个非常有用的运算符 empty,其用法为${empty 变量},结果为布尔值。
若变量未定义,则返回值为 true
若变量为 String 类型,且其值为空串,则返回值为 true。
若变量为引用类型,且其值为 null,则返回值为 true。
若变量为集合类型,且其不包含任何元素,则返回值为 true。
结果:
以上是关于EL表达式的主要内容,如果未能解决你的问题,请参考以下文章