EL表达式简介
l EL 全名为Expression Language。EL主要作用:
获取数据:
• EL表达式主要用于替换JSP页面中的脚本表达式,以从各种类型的web域 中检索java对象、获取数据。(某个web域 中的对象,访问javabean的属性、访问list集合、访问map集合、访问数组)
l 使用EL表达式获取数据语法:“${标识符}”
l EL表达式语句在执行时,会调用pageContext.findAttribute方法,用标识符为关键字,分别从page、request、session、application四个域中查找相应的对象,找到则返回相应对象,找不到则返回”” (注意,不是null,而是空字符串)
El表达式获取数据实例代码
<br>使用el表达式获取javabean对象--------------------------------------------------
<jsp:useBean id="p" class="com.itheima.day06.util.Person">jsp:useBean>
${p.name }
<br>使用el表达式获取list集合--------------------------------------------------
<%
List list=new ArrayList();
list.add("aa");
list.add("bb");
request.setAttribute("list", list);
%>
${list[1] }
<br>使用el表达式获取map集合--------------------------------------------------
<%
Map
map.put("one", "oneone");
map.put("two", "twotwo");
request.setAttribute("map", map);
%>
${map.two }
<br>使用el表达式获取复杂对象-------------------------------------------------
<%
Address address=new Address();
address.setCity("滨州");
address.setProvince("山东");
p.setAddress(address);
%>
${p.address.city }
执行运算
l empty运算符:检查对象是否为null或“空”,很好用!!!
l 二元表达式:${user!=null?user.name : “”} ,很好用!!!
l <br>使用el表达式判断对象是否为空
l ${empty p } 如果为空,则打印false
l <br>二元表达式。也就是三目运算符 意思 如果p.name不等于空为真,则打印p.name否则打印ddd
l ${p.name!=null?p.name:"dddd"}
EL表达式11大隐式对象
1.pageContext 对应于JSP页面中的pageContext对象(注意:取的是pageContext对象。)
2.pageScope 代表page域中用于保存属性的Map对象
3. requestScope 代表requset域中用于保存属性的Map对象
4. sessionScope 代表Session域中用于保存属性的Map对象
5.applicationScope 代表application域中用于保存属性的Map对象
6. param 表示一个保存了所有请求参数的Map对象
7. paramValues 表示一个保存了所有请求参数的Map对象,它对于某个请求参数,返回的是一个string[]
8. header 表示一个保存了所有http请求头字段的Map对象
9. headerValues 同上,返回string[]数组。注意:如果头里面有“-” ,例Accept-Encoding,则要headerValues[“Accept-Encoding”]
10. cookie 表示一个保存了所有cookie的Map对象
11. initParam 表示一个保存了所有web应用初始化参数的map对象
测试各个隐式对象
注意事项
测试headerValues时,如果头里面有“-” ,例Accept-Encoding,则要headerValues[“Accept-Encoding”]
测试cookie时,例${cookie.key}取的是cookie对象,如访问cookie的名称和值,须${cookie.key.name}或${cookie.key.value}
案例应用
1. 提交表单到Servlet时的绝对路径可以使用el表达式来实现。
例子:
2. 想要某个性别或者爱好被默认选中时,也可以使用el表达式。
实例:
<%
pageContext.setAttribute("gender","1");
pageContext.setAttribute("p","BJ");
%>
性别:
':'' }/>男
女
故乡:
北京
山东
湖北
Jstl和EL表达式简单入门
1. 导入jar包 standard.jar和jstl.jar
2. 在页面中引入。<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
1.使用el和jstl进行遍历list集合。
<%
List list=new ArrayList();
list.add(new Person(1,"d"));
list.add(new Person(2,"a"));
list.add(new Person(3,"d"));
request.setAttribute("list", list);
%>
${list.num }:${list.name }
Iteams指的是要迭代那个对象。Var是一个变量,是用该变量进行迭代此对象。
2.使用el表达式和jstl来迭代map集合
<%
Map map=new HashMap();
map.put("1",new Person(1,"d") );
map.put("2",new Person(2,"a") );
map.put("3",new Person(3,"e") );
request.setAttribute("map", map);
%>
${map.key }=======${map.value.num }
3. 使用-----c:if-----------------进行判断
C:if就相当于java代码中的if。
<%
session.setAttribute("user", "jiange");
%>
<c:if test="${sessionScope.user==null }">
请登录
c:if>
<c:if test="${sessionScope.user!=null }">
欢迎你${sessionScope.user }
c:if>
test后面的值必需是boolean类型的!