<%@page import="test.domain.Address"%>
<%@page import="test.domain.Person"%>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>EL表达式</title>
<%--用EL表达式在取数据时,通常用.号,.号取不出来时用[] --%>
</head>
<body>
<%--模仿servlet转发数据给JSP 数据以普通方式带过来--%>
<%
String data = "abcd";
request.setAttribute("data", data);
%>
<%--在JSP中取数据 --%>
${data}<%-- 调用pageContext.findAttribute(data)方法从 page request session application这四个域依次找数据,找不到返回"" --%>
<br>
<%--模仿servlet转发数据给JSP 数据存在bean中带过来--%>
<%
Person p = new Person();
p.setName("aaaaaa");
request.setAttribute("person", p);
%>
<%--在JSP中取数据 --%>
${person.name}<%--取出person中的name属性的值--%>
<br>
<%--
先用${person} 通过pageContext.findAttribute(person) 找到person,找到了Person对象p,
${person.name}访问这个Person对象的name属性,通过反射取值
--%>
<%--模仿servlet转发数据给JSP 数据存在复杂bean中带过来--%>
<%
Person p1 = new Person();
Address a = new Address();
a.setCity("哈哈");
p1.setAddress(a);
request.setAttribute("p1", p1);
%>
<%--在JSP中取数据 --%>
${p1.address.city}<%--取出p1中Address对象address的city属性值--%>
<br>
<%--模仿servlet转发数据给JSP 数据以集合形式带过来--%>
<%
List<Person> list = new ArrayList<Person>();
list.add(new Person("aaa"));
list.add(new Person("bbb"));
list.add(new Person("ccc"));
request.setAttribute("list", list);
%>
<%--在JSP中取数据 --%>
${list[0].name}<%--取出list集合中第一个对象的name值,迭代的话需要EL表达式配合jstl--%>
<br>
<%--模仿servlet转发数据给JSP 数据以Map集合形式带过来--%>
<%
Map<String,Person> map = new HashMap<String,Person>();
map.put("aa", new Person("aaaaaa"));
map.put("bb", new Person("bbbbbb"));
map.put("cc", new Person("cccccc"));
map.put("dd", new Person("dddddd"));
map.put("11", new Person("111111"));//关键字最好不要用数字,在程序中会出问题,map的key用数字时EL表达式的通常方式取数据时会有问题
request.setAttribute("map", map);
%>
<%--在JSP中取数据 --%>
${map.aa.name}<%--取出map集合中key为aa的value为Person对象的name的值--%>
<%--${map.11.name}这样会出问题,需要这样取: --%>
${map['11'].name}
<br>
<%--得到当前web应用的名称(路径) /day09--%>
${pageContext.request.contextPath }<%--先拿到PageContext对象,然后通过getRequest方法拿到Request对象,然后通过Request对象的getContextPath方法拿到web应用的名称 --%>
<a href="${pageContext.request.contextPath }/index.jsp">点点</a><%--<a href="/day09/index.jsp">点点</a> --%>
<br/>
</body>
</html>
package test.domain;
import java.util.Date;
public class Person {
private String name="aaa";
private int age;
private Date birthday;
private Address address;
public Person() {
super();
// TODO Auto-generated constructor stub
}
public Person(String name) {
super();
this.name = name;
}
public Address getAddress() {
return address;
}
public void setAddress(Address address) {
this.address = address;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
package test.domain;
public class Address {
private String city;
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
}