javaweb之常用的EL表达式

<%@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;
	}
}