EL表达式
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是一个东西
作用 可以获取到JSP中其他的隐含对象
例如:可以获取项目名:
${pageContext.request.contextPath }
pageScope
类型:Map<String,Object>
代表:page域中的属性
作用:可以获取到page域中的属性
requestScope
类型:Map<String,Object>
代表:request域中的属性
作用:可以获取到request域中的属性
sessionScope
类型:Map<String,Object>
代表:session域中的属性
作用:可以获取到session域中的属性
applicatScope
类型:Map<String,Object>
代表:application域中的属性
作用:可以获取到application域中的属性
请求参数
参数对象主要用于获取get或post请求中的参数。
param
类型: Map<String , String>
代表:用户发送的请求参数
作用:可以获取请求参数
用法: ${param.参数名}
paramValues
类型:Map<String , String[]>
代表:一个请求参数对应的多个值
用法: ${paramValues.参数名[索引]}
其他
header
作用:可以获取到用户发送的请求头
类型:Map<String , String>
例如:获取用户的系统信息 ${header['User-Agent']}
headerValues
类型: Map<String , String[]>
作用:可以获取一个头的多个值
initParam;
类型:Map<String , String>
作用:获取整个WEB应用的初始化参数
cookie
类型:Map<String , Cookie>
作用:用来获取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 |