el表达式
EL表达式和JSTL标签快速入门:
EL表达式用于获取数据,在JSP页面中可使用${标识符}的形式,通知JSP引擎调用pageContext.findAttribute()方法,以标识符为关键字从各个域对象中获取对象。如果域对象中不存在标识符所对应的对象,则返回结果为””(注意,不是null)。
示例:使用EL表达式获取request、session、applection域中的数据。
EL表达式中也可以使用${customerBean.address}的形式来访问JavaBean对象的属性。
示例:使用EL表达式获取Bean属性。
结合JSTL标签,EL表达式也可轻松获取各种集合中的元素。
示例:使用EL表达式获取List、Map集合中的元素。
EL表达式也可使用类如${1==1}的形式进行简单的逻辑判断。
el语法:[]和.访问数据
算数符:+-*/%
关系运算
逻辑运算
条件运算
隐含对象:11
pageContext--当前页面的javax.servlet.jsp.PageContext对象,利用pageContext可以访问ServletContext,Request,Response和Session对象
pageScope--类型是java.util.Map获取页面范围内所有属性的值
requestScope--类型是java.util.Map获取页面范围内所有属性的值
sessionScope--类型是java.util.Map获取页面范围内所有属性的值
applicationScope--类型是java.util.Map获取页面范围内所有属性的值
param--类型是java.util.Map获取请求中得参数的值
paramValues--类型是java.util.Map用于获取请求中得参数值的String类型的数组进行映射。获取请求中得参数的值。
header--类型是java.util.Map,HTTP请求头部,字符串。等同于ServletRequest.getHeader(String name)。对于包含连字符(-)或其他一些特殊字符的字符串只能用[]操作符。
headerValue--类型是java.util.Map获取请求报头的值
cookie--类型是java.util.Map获取Cookie对象,等同于HttpServletRequest.getCookies(),然后从返回的Cookie数组中找到匹配名字的第一个Cookie对象。
initParam--类型是java.util.Map获取web应用程序初始化
参数的值,等同于调用ServletContext.getInitParameter(String name)
Address.java
public class Address {
private String name = "aaaa";
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Person.java
public class Person {
private String name;
private String password;
private Date birthday;
private int age;
private Address addr;
//这里面有6个属性(name,password,class,address,birthday,age),从object里面继承了一个getClass属性。
public void setBirthday(Date birthday){
this.birthday = birthday;
}
public Date getBirthday(){
return birthday;
}
public void setAge(int age){
this.age = age;
}
public int getAge(){
return age;
}
public void setName(String name){
this.name= name;
}
public String getName(){
return name;
}
public void setPassword(String password){
this.password= password;
}
public String getPassword(){
return password;
}
public Address getAddress() {
return addr;
}
public void setAddr(Address addr) {
this.addr = addr;
}
}
l:取值的情况:
<body>
<%
request.setAttribute("name","aaa");
%>
<!-- 相当于:pageContext.findAttribute("name") 依次在这里面找 page request session application-->
${name }
<!-- 在jsp页面中,使用el表达式可以获取bean的属性 -->
<%
Person p = new Person();
p.setAge(12);
request.setAttribute("person",p);
%>
${person.age }
<!-- 在jsp页面中,使用el表达式可以获取bean中的。。。。。。。。。的属性 -->
<%
Person person = new Person();
Address address = new Address();
person.setAddress(address);
request.setAttribute("person",person);
%>
${person.address.name }
<!-- 在jsp页面中,使用el表达式获取list集合中指定位置的数据 -->
<%
Person p1 = new Person();
p1.setName("aa111");
Person p2 = new Person();
p2.setName("bb");
List list = new ArrayList();
list.add(p1);
list.add(p2);
request.setAttribute("list",list);
%>
${list[0].name }
<!-- 在jsp页面中,使用el表达式获取map集合的数据 -->
<%
Map map = new HashMap();
map.put("a","aaaaxxx");
map.put("b","bbbb");
map.put("c","cccc");
map.put("1","aaaa1111");
request.setAttribute("map",map);
%>
${map.c } <!-- 根据关键字取map集合的数据 -->
${map["1"] }
<c:forEach var="me" items="${map}">
${me.key }=${me.value }<br/>
</c:forEach>
<!-- 利用el表达式获取web应用的名称 -->
<a href="${pageContext.request.contextPath }/1.jsp">点点</a>
<!-- 注意:如果访问bean不存在的属性,会抛 Property 'username' not found on type cn.itcast.Person -->
<%-- ${person.username }--%>
</body>