一、什么是EL表达式
- EL表达式的全称是:Expression Language是表达式语言
- EL表达式主要是代替jsp页面中的表达式脚本在jsp页面中进行数据的输出
- EL表达式输出数据的时候,要比jsp的表达式脚本要简洁很多
- EL表达式的格式:${表达式}
- EL表达式在输出null值的时候,输出的是空串,jsp表达式脚本输出为null值的时候,输出的是null字符串
二、EL表达式搜索域数据的顺序
<% // 往四个域中都分别保存了数据
pageContext.setAttribute("key", "pageContext");
request.setAttribute("key", "request");
session.setAttribute("key", "session");
application.setAttribute("key", "application");
%>
${key}
- 运行tomcat

- 得到的值是pageContext域中的值
三、EL表达式输出Bean的普通属性,数组属性,List集合属性,map集合属性
<body>
<%
Person person = new Person();
person.setName("张三");
person.setPhones(new String[]{"1374231250","14345621520"});
List<String> list = new ArrayList();
list.add("西安");
list.add("南京");
list.add("北京");
person.setCities(list);
Map<String,Object> map = new HashMap<>();
map.put("key","value");
map.put("key1","value1");
person.setMap(map);
pageContext.setAttribute("p",person);
%>
${pageScope.p}<br>
${pageScope.p.name}<br>
${pageScope.p.phones[0]}<br>
${pageScope.p.phones[1]}<br>
${pageScope.p.cities}<br>
${pageScope.p.map.key1}<br>
</body>
- 运行tomcat,输入对应的url

四、EL表达式运算
1. 关系运算
关系运算符 | 转义运算符 | 说明 | 范例 | 结果 |
---|
== | eq | 等于 | ${5==5} | true |
!= | ne | 不等于 | ${5!=5} | false |
> | gt | 大于 | ${2>10} | false |
< | lt | 小于 | ${3<5} | true |
>= | ge | 大于等于 | ${5>=12} | false |
<= | le | 小于等于 | ${5<=12} | true |
2. 逻辑运算
逻辑运算符 | 转义运算符 | 说明 | 范例 | 结果 |
---|
&& | and | 与运算 | ${5==5 && 12>15} | false |
| | | or | 或运算 | ${5==5 | |12>15} | true |
! | not | 取反运算 | $!true} | false |
3.算术运算
算术运算符 | 说明 | 范例 | 结果 |
---|
+ | 加法 | ${5+5} | 10 |
- | 减法 | ${5-2} | 3 |
* | 乘法 | ${2*5} | 10 |
/ | 除法 | ${10/5} | 2 |
% | 取模 | ${111%10} | 1 |
4.empty运算
- empty运算可以判断一个数据是否为空,如果为空,则输出true,否则输出false
5. 三元运算
${12 !=12 ? value1: value2}
6. "."运算和【】中括号运算
- .运算,可以输出bean对象中的某个属性
- []中括号运算,还可以输出map集合中key里含有特殊字符的key的值
<%
Map<String,Object> map1 = new HashMap<String, Object>();
map1.put("a.a.a", "aaaValue");
map1.put("b+b+b", "bbbValue");
map1.put("c-c-c", "cccValue");
request.setAttribute("map", map1);
%>
${ requestScope.map['a.a.a'] } <br>
${ requestScope.map["b+b+b"] } <br>
${ requestScope.map['c-c-c'] } <br>
五、EL表达式的11个隐含对象
变量 | 类型 | 作用 |
---|
pageContext | PageContextImpl | 获取jsp中的九大内置对象 |
pageScope | Map<String,Object> | 获取pageContext域中的数据 |
requestScope | Map<String,Object> | 获取Request域中的数据 |
sessionScope | Map<String,Object> | 获取Session域中的对象 |
applicationScope | Map<String,Object> | 获取ServletContext域中的数据 |
param | Map<String,Object> | 获取请求参数的值 |
paramValues | Map<String,Object[]> | 它也可以获取请求参数的值,获取多个值的时候使用 |
header | Map<String,Object> | 它可以获取请求头的信息 |
headerValues | Map<String,Object[]> | 它可以获取请求头的信息,它可以获取多个值的情况 |
cookie | Map<String,Object> | 获取当前请求的 Cookie 信息 |
initParam | Map<String,Object> | 获取当前请求的 Cookie 信息 |
<% // 往四个域中都分别保存了数据
pageContext.setAttribute("key", "pageContext");
request.setAttribute("key", "request");
session.setAttribute("key", "session");
application.setAttribute("key", "application");
%>
${pageScope.key}<br>
${requestScope.key}<br>
${sessionScope.key}<br>
${applicationScope.key}
- 运行结果如下图
