zoukankan      html  css  js  c++  java
  • 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。

       

       结果:

       


     

  • 相关阅读:
    TongJI Online Judge预赛(3): Game
    堆栈小应用:配对
    在.net中使用Udp协议创建简单的聊天程序
    TongJI Online Judge预赛(2): LOVE LETTER
    全排列问题之递归求解
    如何打造RSS阅读器
    Html 常用标志总结
    实现页面的分帧显示
    每天OnlineJudge之 “数素数”
    文本编辑器中,如何设计 撤销/重复栈
  • 原文地址:https://www.cnblogs.com/penguin1024/p/12173108.html
Copyright © 2011-2022 走看看