EL表达式

 

1、什么是EL表达式

EL表达式的全称是Expression Language,它是一种借鉴了JavaScript和XPath的表达式语言。EL表达式定义了一系列的隐含对象和操作符,使开发人员能够很方便地访问页面的上下文,以及不同作用域内的对象,而无需再JSP页面嵌入Java代码(小脚本、表达式等),从而使开发人员即使不熟悉java也能轻松地编写JSP程序。

2、EL表达式的特点和适用范围

      1)自动转类型。在使用EL得到某个数据时可以自动转换类型,对于类型的限制比较宽松。

    2)使用简单  。 

3、EL表达式的语法

El表达式的语法有两个要素:$ 和 {  } ,两者缺一不可。

  1)点操作符

    EL表达式通常有两部分组成:对象和属性。就像Java代码中一样,在EL表达式中也可以用点操作符" .  "来访问对象。例如,通过${Dog.name}可以访问Dog对象中的name属性(直接  .name就可以,不用setter或者getter啥的)。而且可以一直往后去  .    有多少点多少。

  2) [  ] 操作符

    与点操作符类似,"[  ]"操作符也可以访问对象的某个属性,如${Dog["name"]}可以直接访问狗的名字属性。但是,除此之外,"[  ]" 操作符还提供更加强大的功能。

    >当属性名中如果包含了特殊字符如" . "或" -"等的情况下,就不能使用点操作符来访问,这时只能使用"[ ]"操作符。

    >访问数组,如果有一个对象名为array的数组,那么可以根据索引值来访问其中的元素,如${array[0]}、${array[1]}等。

    >"[ ]"操作符中可以使用变量实现动态访问,如${Dog[dogname]},dogname是另一个变量,改变其值可以动态访问Dog的不同属性(有点像多态)

  3)关系操作符

    在EL表达式中,有六个关系操作符。

      > 或者 gt,大于, 例如:${8>9}  或者 ${8 gt 9 }

      < 或者 lt, 小于 , 例如:${4<9} 或者 ${4 lt 9 }

      >= 或者 ge,大于等于, 例如:${45>=9} 或者 ${45 ge 9 }

      <= 或者 le,小于等于, 例如:${9<=8} 或者 ${9 le 8 }

      == 或者 eq,等于, 例如:${4==4} 或者 ${4 eq 4 }

      != 或者 ne, 不等于,例如:${4!=3} 或者 ${4 ne 3 }

       返回值为true  or   false;  

   4)逻辑操作符

    在EL表达式中,有三个逻辑运算符。

      && 或 and  , 逻辑与,例如:如果A为true,B为false,则${A && B}  或${A and B}。       结果为false

      ||    或  or    , 逻辑或,例如:如果A为true,B为false,则${A ||  B}  或${A or B}。    结果为true

      !  或 not    , 逻辑非,例如:如果A为true,则${!A} 或 ${not A}。           结果为false

   5)Empty操作符

    Empty操作符是一个前缀操作符,用于检测一个变量值是否为null  或者  为empty (如长度为0的字符串变量或集合变量)。例如,变量a不存在,则${empty a}的返回结果为true,${not empty a}或${! empty a}返回的结果为false。

 

4、EL表达式隐式对象

  

  1)pageContext对象
       EL表达式中的pageContext隐式对象与JSP页面中的pageContext对象相对应,EL表达式可以通过pageContext隐式对象访问其它JSP隐式对象,如访问request、response对象属性时,可以使用表达式${pageContext.request.requestURI}表达式${pageContext.response.contentType}等。

 

  2)代表特定域属性的隐式对象

       EL表达式中的pageScope、requestScope、sessionScope和applicationScope四个隐式对象分别用于访问JSP页面的page、request、session、application四个域中的属性。例如,表达式${pageScope.userName}返回page作用域中的userName属性的值,表达式${sessionScope.bookName}返回session作用域中的bookName属性的值。

       在EL表达式中也可以不使用这些隐式对象来指定查找域,而是直接引用这些域中的属性名称。例如,表达式${userName}就会在page、request、session、application这四个作用域内按顺序依次查找userName属性,直到找到为止。

  3)代表请求参数的隐式对象

       EL表达式中的隐式对象paramparamValues用于获取客户端访问JSP页面时传递的请求参数的值,由于HTTP协议允许使用一个请求参数名出现多次,即一个请求参数可能会有多个值,所以,EL表达式提供了paramparamValues这两个隐式对象来分别获取请求参数的某个值和所有值。

       Param隐式对象用于返回一个请求参数的某个值,如果同一个请求参数有多个值,则返回第一个参数的值。paramValues隐式对象用于返回一个请求参数的所有值,返回结果为该参数的所有值组成的字符串数组,例如表达式${paramValues.username[0]}用于返回数组中第一个元素的值。

posted @ 2018-06-05 14:54  蒂花钟神秀  阅读(809)  评论(0编辑  收藏  举报