1、什么是 EL 表达式
EL 表达式的全称是:Expression Language。是表达式语言。
2、EL 表达式的作用?
EL 表达式主要是代替 jsp 页面中的表达式脚本在 jsp 页面中进行数据的输出。 因为 EL 表达式在输出数据的时候,要比 jsp 的表达式脚本要简洁很多
<body>
<%
request.setAttribute("key","value");
%>
jsp表达式脚本输出key的值:<%=request.getAttribute("key1")== null ? "" : request.getAttribute("key1")%><br/>
EL表达式输出key的值:${key1}
</body>
说明:EL 表达式的格式是:${表达式}
EL 表达式在输出 null 值的时候,输出的是空串。jsp 表达式脚本输出 null 值的时候,输出的是 null 字符串
3、EL 表达式搜索域数据的顺序
EL 表达式主要是在 jsp 页面中输出数据。 主要是输出域对象中的数据。
当四个域中都有相同的 key 的数据的时候,EL 表达式会按照四个域的从小到大(pageContext->request->session->application)的顺序去进行搜索,找到就输出
<body>
<%
//往四个域中都保存了相同的key的数据。
pageContext.setAttribute("key","pageContext");
request.setAttribute("key","request");
session.setAttribute("key","session");
application.setAttribute("key","application");
%>
${key}
</body>
4、EL 表达式输出 Bean 的普通属性,数组属性。List 集 合属性,map 集合属性
需求——输出 Person 类中普通属性,数组属性。list 集合属性和 map 集合属性。
Person 类:
// i. 需求——输出 Person 类中普通属性,数组属性。list 集合属性和 map 集合属性
private String name;
private String[] hobby;
private List<String> cities;
private Map<String,Object> map;
输出的代码:
<%@ page import="loey.pojo.Person" %>
<%@ page import="java.util.*" %><%--
Created by IntelliJ IDEA.
User: It.me
Date: 2020/10/3
Time: 13:39
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
Person person = new Person();
person.setName("朴灿烈");
person.setHobby(new String[]{"跳舞","唱歌"});
List<String> list = new ArrayList<>();
list.add("北京");
list.add("上海");
list.add("南京");
person.setCities(list);
Map<String, Object> map = new HashMap<>();
map.put("key1","value1");
map.put("key2","value2");
map.put("key3","value3");
person.setMap(map);
pageContext.setAttribute("p",person);
%>
输出Person:${p}<br/>
输出Person的name属性:${p.name}<br/><%--实际上调用的是Perosn类的getName()方法--%>
输出Person的hobby数组属性值:${p.hobby[0]}<br/>
输出Person的cities集合中的元素值:${p.cities}<br/>
输出Person的List集合中个别元素值:${p.cities[0]}<br/>
输出Person的Map集合:${p.map}<br/>
输出Person的Map集合中某个key的值:${p.map.key1}<br/>
</body>
</html>
结果: