<%@ page language="java" import="java.util.*, cn.hncu.domain.User" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>
<head>
<title>EL表达式</title>
</head>
<body>
<h1>EL表达式作用1: 获取数据</h1>
<h2>EL表达式读取简单的属性值</h2>
<h3>EL读取容器中的属性值,注意:只有放在容器的数据才能读取出来,且标识符是属性名(并非对象名)</h3>
<%
pageContext.setAttribute("name", "pageJack");
//pageContext.setAttribute("name", "requestJack", PageContext.REQUEST_SCOPE);
//session.setAttribute("name", "sessionJack");
//application.setAttribute("name", "appJack");
%>
${name}<!-- 此处 name 是属性名 -->
<!-- EL表达式内部调用 pageContext.findAttribute("name")
输出时等价于: pageContext.findAttribute("name")?null:"",pageContext.findAttribute("name") -->
<br/>
${aaa} <!-- 由于4个容器中都不存在该aaa属性,因此输出空串 -->
<br/>
<%
User user = new User();
user.setName("Tom");
user.setAge(22);
user.setPwd("1234");
pageContext.setAttribute("u", user); //只有放在容器中,才能用EL表达式读取出来。
%>
${u} <br/> <!-- 如果该属性的值是一个对象,则自动会调用toString() -->
${u.name},${u.age},${u.pwd} <br/> <!--内部是根据属性名推出对应getter方法进行调用 -->
<h4>EL表达式读取复杂的属性值--map,list,map和list的结合</h4>
<%
Map<String,Object> map = new HashMap<String,Object>();
map.put("nm", "城院");
map.put("age","15");
map.put("user",user);
request.setAttribute("m", map);
%>
${m}<br/> <!-- 输出整个map中的内容:{age=15, user=User [name=Tom, age=22, pwd=1234], nm=城院} -->
<!-- 读取map中属性的两种方式,注意方式2中的引号不能省 -->
${m.nm}, ${m['nm']} <br/>
${m.user.name}, ${m['user'].name}, ${m.user['name']}
<br/>
<%
List<Object> list = new ArrayList<Object>();
list.add("aaa");
list.add("张三");
list.add("城院");
list.add(user);
session.setAttribute("list", list);
%>
${list} <br/> <!-- 输出整个list中的内容: [aaa, 张三, 城院, User [name=Tom, age=22, pwd=1234]] -->
<%-- 读取list中属性的方式: ${标识名[序号]} --%>
${list[1]}<br/>
<%
map.put("mlist", list);
request.setAttribute("m", map);
%>
${m.mlist[3].name} <br/>
</body>
</html>