一、EL表达式简介
EL表达式(Expression Language),是一种表达式语言。JSP的后期版本(2.0以后)是不允许使用脚本片段 <% %> 以及JSP表达式<%=%>的,使用EL表达式来代替JSP表达式,使用标签来代替脚本片段。EL表达式用于在页面中输出一个对象,EL可以直接将域中的对象在页面中输出。
二、基本语法
语法格式:${表达式}
EL可以用来做全域查找:四个域(pageScope、requestScope、sessionScope、applicationScope)
使用方式:${属性名},会自动的按照由小到大的顺序从四个域(pageContext、request、session、application)中查找指定属性,哪个先找到则返回哪个,如果没找到不会出现null,而是返回一个空串
Tip
:
1️⃣EL表达式只能读取域中的对象
2️⃣在EL表达式中不能直接调用对象的方法
3️⃣通过EL表达式来读取一个对象时,可以直接${对象.属性名},EL表达式会自动调用该属性对应的getter方法获取属性值
4️⃣EL支持级联调用:${requestScope.stu.address.street}
EL中给我们提供了4个域对象——pageScope、requestScope、sessionScope、applicationScope,EL默认会按照由小到大的顺序从四个域对象中查找属性值,我们也可以指定从哪个域对象中查找:
${pageScope.key}
${requestScope.key}
${sessionScope.key}
${applicationScope.key}
使用EL表达式时如果遇到特殊的属性名还可以使用如下方式获取属性值:${xxxScope[‘属性名’]}
${requestScope['Hello-Kitty']}
可以直接通过EL表达式获取域中的JavaBean的指定属性:${对象.属性.属性},EL表达式会自动调用对象的get方法来获取指定的属性值,而不是调用类的属性。
${requestScope.stu.address.street}
三、EL中的隐含对象
EL中给我们提供了11个隐含对象,我们可以在EL表达式中直接使用这11个对象,这11个隐含对象中,除了pageContext剩下的全都是Map:
隐含对象 | 类型 | 作用 |
---|---|---|
pageContext | PageContext | 和JSP中的pageContext一样,可以获取到JSP中其他隐含对象 |
pageScope | Map<String,Object> | 获取page域中的属性 |
requestScope | Map<String,Object> | 获取request域中的属性 |
sessionScope | Map<String,Object> | 获取session域中的属性 |
applicationScope | Map<String,Object> | 获取application域中的属性 |
param | Map<String,String> | 可以获取到用户发送的请求参数 |
paramValues | Map<String,String[]> | 可以获取到一个参数对应的多个值 |
header | Map<String,String> | 可以获取到用户发送的请求头 |
headerValues | Map<String,String[]> | 可以获取到一个请求头对应的多个值 |
initParam | Map<String,String> | 获取到整个WEB应用的初始化参数 |
cookie | Map<String,Cookie> | 获取到浏览器的Cookie信息 |
四、EL中的运算
在EL中可以直接使用常用的运算符进行 + - * / 运算
empty运算符:可用于三目运算,用来判断一个域中的对象是否为空,empty运算符检查一个null的对象时,会返回true,检查一个空串时,也会返回true,检查一个空的集合时,也会返回true,只有检查的对象有实质的内容或对象不为null时才返回false。
我们常用empty运算符判断一个集合是否为一个空集合,或者一个字符串是否为一个空串。使用方式:${empty 属性名}