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表达式的主要内容,如果未能解决你的问题,请参考以下文章

jquery中使用el表达式的问题,求教

EL概述和EL运算符

EL表达式总结

JSTL和EL

EL表达式

jquery与EL表达式的$冲突