EL(Expression Language) 是为了使JSP写起来更加简单。表达式语言的灵感来自于 ECMAScript 和 XPath 表达式语言,它提供了在 JSP 中简化表达式的方法,让Jsp的代码更加简化。
语法格式:在JSP页面的任何静态部分均可通过:${expression}来获取到指定表达式的值
从四大作用域中取值: pageContext request session Application,从低范围到高范围,依次查找,直到找到为止,找不到显示空。
在EL表达式使用之前,对数据的操作比较繁琐,如下面代码,在显示用户数据的时候,使用jsp脚本代码赋值的时候编写代码复杂,如果数据量过多的时候,会导致工作量剧增。这也是为什么后期使用EL表达式的原因。在使用EL表达式之前,我们先看一下使用jsp脚本方式显示table表格中的数据。(可以自己运行查看效果)。
<%@ page import="java.util.Date" %>
<%@ page import="com.hwadee.entity.User" %>
<%@ page import="java.util.ArrayList" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" session="true" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
// 此处模拟后端servlet封装数据
ArrayList<User> users = new ArrayList<>();
// 管理员
request.setAttribute("admin_id",0);
request.setAttribute("admin_nickname","admin");
request.setAttribute("admin_username","admin");
request.setAttribute("admin_password","123456");
request.setAttribute("admin_createTime",new Date());
request.setAttribute("admin_level",2);
// 普通用户1
request.setAttribute("user1_id",1);
request.setAttribute("user1_nickname","花花01");
request.setAttribute("user1_username","huahua01");
request.setAttribute("user1_password","123456");
request.setAttribute("user1_createTime",new Date());
request.setAttribute("user1_level",1);
// 普通用户2
request.setAttribute("user2_id",2);
request.setAttribute("user2_nickname","花花02");
request.setAttribute("user2_username","huahua02");
request.setAttribute("user2_password","123456");
request.setAttribute("user2_createTime",new Date());
request.setAttribute("user2_level",1);
// 普通用户3
request.setAttribute("user3_id",3);
request.setAttribute("user3_nickname","花花03");
request.setAttribute("user3_username","huahua03");
request.setAttribute("user3_password","123456");
request.setAttribute("user3_createTime",new Date());
request.setAttribute("user3_level",1);
%>
<hr>
<table>
<tr><td>ID</td> <td>昵称</td> <td>用户名</td> <td>密码</td> <td>创建时间</td> <td>级别</td></tr>
<tr><td><%=request.getAttribute("admin_id")%></td><td><%=request.getAttribute("admin_nickname")%></td><td><%=request.getAttribute("admin_username")%></td><td><%=request.getAttribute("admin_password")%></td><td><%=request.getAttribute("admin_createTime")%></td><td><%=request.getAttribute("admin_level")%></td></tr>
<tr><td><%=request.getAttribute("user1_id")%></td><td><%=request.getAttribute("user1_nickname")%></td><td><%=request.getAttribute("user1_username")%></td><td><%=request.getAttribute("user1_password")%></td><td><%=request.getAttribute("user1_createTime")%></td><td><%=request.getAttribute("user1_level")%></td></tr>
<tr><td><%=request.getAttribute("user2_id")%></td><td><%=request.getAttribute("user2_nickname")%></td><td><%=request.getAttribute("user2_username")%></td><td><%=request.getAttribute("user2_password")%></td><td><%=request.getAttribute("user2_createTime")%></td><td><%=request.getAttribute("user2_level")%></td></tr>
<tr><td><%=request.getAttribute("user3_id")%></td><td><%=request.getAttribute("user3_nickname")%></td><td><%=request.getAttribute("user3_username")%></td><td><%=request.getAttribute("user3_password")%></td><td><%=request.getAttribute("user3_createTime")%></td><td><%=request.getAttribute("user3_level")%></td></tr>
</table>
</body>
</html>
运行后效果截图:
通过结果显示,我们可以知道可以使用脚本表达式进行为页面table表格赋值,但存在问题:如果要对页面中的数据进行判断,会更加复杂繁琐,不便于代码维护。因此提出使用EL表达式来简化JSP脚本。让我们一起来看看使用EL表达式的方式。