a)什么是 EL 表达式,EL 表达式的作用?
EL 表达式的全称是:Expression Language。是表达式语言。
EL 表达式的什么作用:EL 表达式主要是代替 jsp 页面中的表达式脚本在 jsp 页面中进行数据的输出。
因为 EL 表达式在输出数据的时候,要比 jsp 的表达式脚本要简洁很多。
<body> <% request.setAttribute("key","值"); %> 表达式脚本输出 key 的值是:%=request.getAttribute("key1")==null?"":request.getAttribute("key1")%><br/> EL 表达式输出 key 的值是:${key1} </body>
EL表达式的格式是 ${}
EL 表达式在输出 null 值的时候,输出的是空串。jsp 表达式脚本输出 null 值的时候,输出的是 null 字符串。
b)EL 表达式搜索域数据的顺序
EL 表达式主要是在 jsp 页面中输出数据。
主要是输出域对象中的数据。
当四个域中都有相同的 key 的数据的时候,EL 表达式会按照四个域的从小到大的顺序去进行搜索,找到就输出。
<body> <% // 往四个域中都保存了相同的 key 的数据。 request.setAttribute("key", "request");
session.setAttribute("key", "session"); application.setAttribute("key", "application"); pageContext.setAttribute("key", "pageContext"); %> ${ key }
c) EL表达式输出自定义类
public class Person { //i. 需求 —— 输出 Person 类中普通属性,数组属性。 list 集合属性和 map 集合属性。 private String name; private String[] phones; private List<String> cities; private Map<String,Object> map; public int getAge() { return 18;
} }
这样输出
<body> <% Person person = new Person(); person.setName("国哥好帅!"); person.setPhones(new String[]{"18610541354","18688886666","18699998888"}); List<String> cities = new ArrayList<String>(); cities.add("北京"); cities.add("上海"); cities.add("深圳"); person.setCities(cities); 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> 输出 Person 的 pnones 数组属性值:${p.phones[2]} <br> 输出 Person 的 cities 集合中的元素值:${p.cities} <br> 输出 Person 的 List 集合中个别元素值:${p.cities[2]} <br> 输出 Person 的 Map 集合: ${p.map} <br> 输出 Person 的 Map 集合中某个 key 的值: ${p.map.key3} <br> 输出 Person 的 age 属性:${p.age} <br> </body>