EL表达式(Expression Language)
EL简介
- EL是JSP内置的表达式语言,用以访问页面的上下文以及不同作用域中的对象 ,取得对象属性的值,或执行简单的运算或判断操作。EL在得到某个数据时,会自动进行数据类型的转换。
- EL表达式用于代替JSP表达式(<%= %>)在页面中做输出操作。
- EL表达式仅仅用来读取数据,而不能对数据进行修改。
- 使用EL表达式输出数据时,如果有则输出数据,如果为null则什么也不输出。
EL基本使用
- EL表达式总是放在{}中,而且前边有一个$作为前缀。
- ${EL表达式}
- 获取域中的对象可以直接使用对象名,如获取域中名字为user的对象
- ${user}
- 获取对象的属性值可以直接通过“对象.属性名”
- ${user.name}
- ${user.age}
- 注意:这里的属性名是get和set方法对应的属性值,并不是对象中的变量名。
- 比如:如果获取name属性值,那么该对象中必定要存在一个getName()方法。
- 获取对象的属性也可以通过“对象[“属性名”]”
- ${user[“name”]}
- ${user[“age”]}
- 获取Map中属性时可以以直接通过属性的key
- ${map.key}
- ${map[key]}
- 在指定域中获取属性
- 在EL表达式中如果我们直接使用属性名如:${user},它将会在四个域中由小到大依次查找。顺序:pageScope、requestScope、sessionScope、applicationScope。
- 也可以指定从哪个域中获取:
- ${ pageScope .user}:当前页面
- ${requestScope.user}:当前请求
- ${sessionScope.user}:当前会话
- ${sessionScope.user}:当前应用
EL隐含对象
- EL中包含11个隐含对象,这些对象可以在EL表达式中直接使用。
pageContext
- pageContext和JSP中的pageContext功能一样。
请求域
- 请求域主要用于获取域对象中的属性,四个对象分别对应四个请求域。
- pageScope
- requestScope
- sessionScope
- applicationScope
请求参数
- 参数对象主要用于获取get或post请求中的参数。
- param;
- 获取指定的请求参数, 如:${param.username}
- paramValues;
- 获取请求参数数组,如:${paramValues.sport[1]}
- param;
其他
- header;
- headerValues;
- initParam;
- cookie;
EL逻辑运算
运算符 | 说明 | 范例 | 结果 |
+ | 加 | ${17+5} | 22 |
- | 减 | ${17-5} | 12 |
* | 乘 | ${17*5} | 85 |
/或div | 除 | ${17/5}或${17 div 5} | 3 |
%或mod | 取余 | ${17%5}或${17 mod 5} | 2 |
==或eq | 等于 | ${5==5}或${5 eq 5} | true |
!=或ne | 不等于 | ${5!=5}或${5 ne 5} | false |
<或lt | 小于 | ${3<5}或${3 lt 5} | true |
>或gt | 大于 | ${3>5}或${3 gt 5} | false |
<=或le | 小于等于 | ${3<=5}或${3 le 5} | true |
>=或ge | 大于等于 | ${3>=5}或${3 ge 5} | false |
&&或and | 并且 | ${true&&false}或${true and false} | false |
!或not | 非 | ${!true}或${not true} | false |
||或or | 或者 | ${true||false}或${true or false} | true |
empty | 是否为空 | ${empty “”},可以判断字符串、数据、集合的长度是否为0,为0返回true。empty还可以与not或!一起使用。${not empty “”} | true |