EL 表达式用美元符号“$”定界,内容包含在一对花括号“{}”中,例如:${expression}。EL 表达式语法很简单,它最大的特点就是使用很方便。
1.EL 表达式特点
(1)在 EL 表达式中可以获得命名空间(PageContext 对象,它是页面中所有其他内置对象的最大范围的集成对象,通过它可以访问其他内置对象);
(2)表达式可以访问一般变量,还可以访问 JavaBean 类中的属性以及嵌套属性和集合对象;
(3)在 EL 表达式中可以执行关系、逻辑和算术等运算;
(4)扩展函数可以与 Java 类的静态方法进行映射;
(5)在表达式中可以访问 JSP 的作用域(request,session,application 以及 page)。
<jsp:useBean id="dao" scope="page" class="com.UserInfoDao"></jsp:useBean>
<%dao.name;%> <!--调用 UserInfoDao 类中 name 属性-->
<%dao.getName();%> <!--调用 UserInfoDao 类中 getName()方法-->
<jsp:useBean id="dao" scope="page" class="com.UserInfoDao"></jsp:useBean>
${dao.name} <!--调用 UserInfoDao 类中 name 属性-->
${dao.getName()} <!--调用 UserInfoDao 类中 getName()方法-->
2.EL 获取变量值的方法
EL 使用到的变量作用域范围的名称:
- page 范围:在 EL 中使用名称 pageScope;
- request 范围:在 EL 中使用名称 requestScope;
- session 范围:在 EL 中使用名称 sessionScope;
- application 范围:在 EL 中使用名称 applicationScope。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<% String s1 = "Hello!";
request.setAttribute("s1",s1);
String s2="Hello!"; //未将 s2 放入域空间,EL 将无法获取
%>
<%="${s1}"%>=${s1} <br>
<%="${s2}"%>=${s2} <br>
</body>
</html>
3.EL 利用“[ ]”与“.”操作符取数据
<%@page import="java.util.List"%>
<%@page import="java.util.ArrayList"%>
<%@page import="java.util.HashMap"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<% char[] ch = { '1', '2' };
request.setAttribute("ch", ch); //将字符数组变量 ch 置于 requestScope 域,以便 EL 可以访问。
String s1 = "Hello,how are you!";
request.setAttribute("s1", s1);
List<String> list = new ArrayList<String>();
list.add("first");
list.add("second");
request.setAttribute("list", list);
HashMap<Long, String> map1 = new HashMap<Long, String>();
map1.put(0L, "天翼");
map1.put(1L, "翼支付");
request.setAttribute("map1", map1);
%>
s1=${s1}<br>
字符数组:<%="${ch[1]}"%>=${ch[1]} <br>
List 集合:<%="${list[1]}"%>=${list[1]}<br>
Map 集合:<%="${map1[1]}"%>=${map1[1]} <br>
</body>
</html>
4.EL 表达式中的隐式对象