一、EL表达式
EL表达式全称:Expression Language,即表达式语言
EL表达式作用:代替JSP页面中表达式脚本进行数据的输出
EL表达式比JSP的表达式脚本简洁很多
EL表达式的格式是:${表达式} ,注:EL表达式写在jsp页面中,表达式一般是域对象的key
代码演示:在web目录下创建Test.jsp
<body>
<%
request.setAttribute("key", "value");
%>
<%-- 表达式脚本输出key1的值 --%>
<%=request.getAttribute("key1")%>
<%-- EL表达式输出key1的值 --%>
${key1}
<%-- 表达式脚本输出null值时页面显示null
EL表达式输出null值时页面什么都不显示(空串)--%>
</body>
运行结果:
二、EL表达式搜索域数据的顺序
EL表达式主要是输出域对象中的数据,当四个域对象都有同一个key的值时,EL表达式会按照四个域对象的范围从小到大进行搜索,找到就输出,与四个域对象声明的先后顺序无关
代码演示:在web目录下创建Test.jsp
<body>
<%
//向四个域对象中都保存相同key的值
request.setAttribute("key", "request");
session.setAttribute("key", "session");
application.setAttribute("key", "application");
pageContext.setAttribute("key", "pageContext");
%>
<%-- 使用EL表达式输出key的值 --%>
${key}
</body>
运行结果:
三、EL表达式输出Java类的属性
代码演示:创建Person类
public class Person {
//输出Person类中普通属性,数组属性,list集合属性和map集合属性
private String name;
private String[] phones;
private List<String> cities;
private Map<String, Object> map;
//注意:没有声明age属性
public int getAge() {
return 18;
}
//以及全参、空参构造器,各属性的getter/setter方法
}
代码演示:在web目录下创建Test.jsp
<body>
<%
Person person = new Person();
person.setName("JayChou");
person.setPhones(new String[]{"123","456","789"});
//给cities属性赋值
List<String> cities = new ArrayList<String>();
cities.add("北京");
cities.add("上海");
cities.add("深圳");
person.setCit