目录
1. 定义
Expression Language表达式语言(EL表达式),替代jsp页面中数据访问的复杂编码,可以非常便捷地取出域对象(pageContext、request、session、application)中保存的数据,前提是一定要先setAttribute,EL就相当于在简化getAttribute。
格式:${变量名}变量名就是setAttribute的key值。
2. 案例1(比较使用el表达式的代码区别)
2.1 不使用el表达式
el.jsp
<%@ 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>
<%
request.setAttribute("name", "tom");
request.getRequestDispatcher("el2.jsp").forward(request,response);
%>
</body>
</html>
el2.jsp
<%@ 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 name = (String) request.getAttribute("name");
%>
<%=name %>
</body>
</html>
2.2 使用el表达式
el.jsp是一样的
el2.jsp如下
<%@ 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 name = (String) request.getAttribute("name");
%>
${name}
</body>
</html>
2.3 结果展示
两个都是一样的结果
3. EL优先级比较
3.1 案例2(优先级测试)
<%@ 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>
<%
pageContext.setAttribute("name", "page");
request.setAttribute("name", "request");
session.setAttribute("name", "session");
application.setAttribute("name", "application");
%>
${name }
</body>
</html>
3.2 优先级定义
优先级刚好和作用域大小相反。
- el表达式对4种域对象的默认查找顺序:pageContext→request→session→application
按照上述顺序的进行查找,找到立即返回,在application种也无法找到,则返回null。 - 指定作用域进行查找:
pageContext:$ {pageScope.name}
request:$ {requestScope.name}
session:$ {sessionScope.name}
application:$ {applicationScope.name}
4. 数据级联
<%
User user = new User(1,"zhangsan",86.5);
System.out.println(user.toString());
pageContext.setAttribute("user", user);
%>
<table>
<tr>
<th>编号</th>
<th>姓名</th>
<th>成绩</th>
</tr>
<tr>
<td>${user.id}</td>
<td>${user.name}</td>
<td>${user.score}</td>
</tr>
</table>
本质是在调用get方法
${user.id}
和${user["id"]}
是一样的
5. EL执行表达式
&& and
|| or
! not
== eq
!= ne
< lt
> gt
<= le
>= ge
empty 变量为null,长度为0的string,size为0的集合
5.1 < 例子
<%
pageContext.setAttribute("num1", 10);
pageContext.setAttribute("num2", 9);
%>
${num1>num2}