EL表达式,expression language 表达式语言。
语法:${表达式},将表达式中结果展示到页面上,需要注意的是,EL表达式获取数据时,必须从作用域中获取:page,request.session,application
特点: 如果El表达式获取不到内容,不会显示null,也不会报错,空白显示,El表达式不能实现逻辑处理(选择判断,循环)。
如果多个作用域中存在同名key,默认的获取顺序是从小到大作用域,如果获取到了对对应的值,则不会再继续下一个作用域寻找。但是也可以指定作用域获取${xxxScop.key}
对于复杂类型只能获取单个元素${key[index]}
对于自定义数据类型${key.属性名}
EL表达式在获取属性值时,通过getXXX方法来进行获取,所以私有属性可以在EL表达式中直接获取
EL表达式有以下特点:
1 自动类型转换。
在使用EL得到某个数据时可以自动转换类型,对于类型限制比较宽松
2 使用简单。
|语法:
${表达式}
---1点操作符
xxx x = new xxx();
x.set();
request.setattribute("key",x);
例如:${key.get}可以访问x对象的y属性
---2[]操作符
与点类似,[]操作符也可以访问对象的某个属性,如:${x[y]}
-当属性名包含了特殊字符如:.或-等的情况下,就不能使用点操作符来访问。这时只能用[]操作符。
-访问数组,如果有一个对象名为array的数组,那么可以根据索引值来访问其中的元素,如${array[0]},${array[1]}
-[]操作符中可以使用变量实现动态访问,如${x[y]} y是另一个变量,改变其值可以动态访问x的不同属性。
-一般情况下,.和[]可以互换。在互换时[]内加""。指定索引时不可互换。
|指定作用域获取:${ ***Scope.key}
|pagecontext 获取内置对象
|param(单个) paramvalues(多个) 获取用户在页面上输入的数据。
|关系操作符
关系操作符 说明 示例
==或者eq 等于 ${1==3}或者${2 eq 5}
!-或者ne 不等于 ${2!=5}或者${5 ne 7}
>或者 gt 大于 ${1>9}或者${5 gt 2}
<或者 lt 小于 ${1<12}或者${5 lt 1}
>= 或者ge 大于等于 ${5>=9}或者${5 ge 5}
<=或者le 小于等于 ${9<=4}或者${2 le 1}
|逻辑操作符
逻辑操作符 说明 示例
&&或者and 逻辑与 ${A && B}或者${A and B}
||或者or 逻辑或 ${A || B}或者${A or B}
! 或者 not 逻辑非 ${ !A }或者${ notB }
|Empty操作符
是一个前缀操作符,用于检测变量值是否是null或者为empty
例如:变量a不存在 ${empty a}返回true ${not empty a}返回false