EL (Expression Language)是为了使JSP写起来更加简单。表达式语言的灵感来自于 ECMAScript 和 XPath 表达式语言,它提供了在JSP中简化表达式的方法,让Jsp的代码更加简化。
语法结构:
${expression}
EL表达式一般操作的都是域对象中的数据,操作不了局部变量。
域对象的概念在JSP中一共有四个:pageContext, request, session, application;范围依次是,本页面,一次请求,一次会话,整个应用程序。
当需要指定从某个特定的域对象中查找数据时可以使用四个域对象对应的空间对象,分别是: pageScope,requestScope, sessionScope, applicationScope。
而EL默认的查找方式为从小到大查找,找到即可。当域对象全找完了还未找到则返回空字符串""。
设置域对象中的数据
<%
pageContext.setAttribute("uname", "zhangsan");//page作用域
request.setAttribute("uname", "lisi");//request作用域
session.setAttribute("uname", "wangwu");//session作用域
application.setAttribute("uname", "zhaoliu");//application作用域
%>
获取域对象的值
获取域对象中的数据:默认查找方式为从小到大,找到即止。若四个范围都未找到,则返回空字符串。
${uname}
获取指定域对象的值
${pageScope.uname }
${requestScope.uname }
${sessionScope.uname }
${applicationScope.uname }
获取List
<%
List list=new ArrayList();
list.add("aa");
list.add("bb");
list.add("cc");
request.setAttribute("list", list);
%>
<%--
获取List中指定正标的数据
${1ist[下标] }
获取集合的长度
${1ist.size() }
注:
List代表的是存在域对象中的变量名(限域变量名)
--%>
${list[1] }
获取Map
<%
Map map=new HashMap();
map.put("aaa", "111");
map.put("bbb", 222);
request.setAttribute("map", map);
%>
<%--
获取Map中指定值
$map["key"] }
或
${map.key }
注:
map代表的是存在域对象中的变量名(限域变量名)
--%>
${map.aaa }
${map["bbb"] }
获取JavaBean对象
User.java
package com.lianxi.bean;
public class User {
private int userId;
private String uname;
private String upwd;
public int getUserId() {
return userId;
}
public void setUserId(int userId) {
this.userId = userId;
}
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
public String getUpwd() {
return upwd;
}
public void setUpwd(String upwd) {
this.upwd = upwd;
}
@Override
public String toString() {
return "EL [userId=" + userId + ", uname=" + uname + ", upwd=" + upwd + "]";
}
}
<%
User user=new User();
user.setUserId(1);
user.setUname("zhangsan");
user.setUpwd("123");
request.setAttribute("user", user);
%>
<%-- JavBean中的属性字段需要提供get方法--%>
${user} <%--获取对象--%>
${user.uname} <%--获取对象中的属性--%>
${user.getUpwd() } <%--获取对象中的属性,与上面等价--%>
empty
判断域对象是否为空。为空,返回true;不为空返回fa1se;$ {empty 限域变量名}
判断对象是否不为空。${!empty 限域变量名}
${empty uname }
EL运算
<%
request.setAttribute("a", 10);
request.setAttribute("b", 2);
request.setAttribute("c", "cc");
request.setAttribute("d", "dd");
%>
等值判断
比较两个值是否相等,返回true或false
= 或 eq
${a == b }
${a eq b }
${c == "cc" }
算术运算
${a > b }
${a>=10 }
${a > b && b > 5 }
${a + b >12 || a - b <=5 }