EL(Express Lanuage)表达式可以嵌入在jsp页面内部,减少jsp脚本的编写,EL 出现的目的是要替代jsp页面中输出脚本的编写。
EL表达式的作用
格式: ${EL表达式的内容}
EL表达式的作用:
- 从域对象中查找指定的数据。
- 内置对象使用
- 执行运算符
从域中获取数据
EL获得request域中的值: ${requestScope.key};
EL获得session域中的值: ${sessionScope.key};
EL获得application域中的值: ${applicatioScope.key};
EL从四个域中获得某个值${key};
同样是依次从pageContext域,request域,session域,application域中 获取属性,在某个域中获取后
将不在向后寻找
EL获取普通数据
<%@ page contentType="text/html;charset=UTF‐8" language="java" %>
<html>
<head>
2. EL获得javaBean对象的值 3. EL获得List
<String>的值
<title>Title</title>
</head>
<body>
<%‐‐ 存储普通数据 ‐‐%>
<%
//向request域中存储数据
request.setAttribute("name","zhangsan");
//向session域中存储数据
request.getSession().setAttribute("name","lisi");
//向servletContext域中存储数据
getServletContext().setAttribute("name","wangwu");
%>
<h1>取出request域中的数据</h1> ${requestScope.name}
<h1>取出session域中的数据</h1> ${sessionScope.name}
<h1>取出servletContext域中的数据</h1> ${applicationScope.name}
<h1>按照域的从小到大依次搜索域数据</h1> ${name}
</body>
</html>
EL获取JavaBean对象的值
<%@ page contentType="text/html;charset=UTF‐8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%‐‐ 存储User实体数据 ‐‐%>
<%
User user = new User("tom",18);
request.setAttribute("user",user);
%>
<h1>取出User的数据</h1> ${user.username}==${user.age}
</body>
</html>
EL获得List< String>的值
<%@ page contentType="text/html;charset=UTF‐8" language="java" %>
<html>
<head>
<title>Title</title>
4. EL获得List
<User>的值 5. EL获得Map
<String,User>的值
</head>
<body>
<%‐‐ 存储List<String>数据 ‐‐%>
<%
List<String> strList = new ArrayList<>();
strList.add("aaa");
strList.add("bbb");
strList.add("ccc");
request.setAttribute("strList",strList);
%>
<h1>取出strList的数据</h1> ${strList[0]}==${strList[1]}
</body>
</html>
EL获得List< User>的值
<%@ page contentType="text/html;charset=UTF‐8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%‐‐ 存储List<User>数据 ‐‐%>
<%
List<User> userList = new ArrayList<>();
User user2 = new User("lucy",20);
userList.add(user);
userList.add(user2);
request.setAttribute("userList",userList);
%>
<h1>取出userList的数据</h1> ${userList[0].username}==${userList[0].age}
<br/> ${userList[1].username}==${userList[1].age}
<br/>
</body>
</html>
EL获得Map<String,User>的值
<%@ page contentType="text/html;charset=UTF‐8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%‐‐ 存储Map<String,User> ‐‐%>
<%
Map<String,User> userMap = new HashMap<>();
1.3.2 EL的内置对象
获取JSP中域中的数据(pageScope,requestScope,sessionScope,applicationScope)
pageContext - WEB开发中的pageContext.
获得web应用名称:${pageContext.request.contextPath}
在Servlet中获得web应用的名称:request.getContextPath();
在jsp页面上获得web应用的名称:${pageContext.request.contextPath}
1.3.3 EL执行运算符
1. 算数运算符 + - * / %
2. 逻辑运算符 && || !
3. 比较运算符 > < >= <=
4. Null运算符 empty
5. 三元运算符
userMap.put("user1",user);
userMap.put("user2",user2);
request.setAttribute("userMap",userMap);
%>
<h1>取出userMap的数据</h1> ${userMap.user1.username}==${userMap.user1.age}
<br/> ${userMap.user2.username}==${userMap.user2.age}
<br/> ${userMap['user1'].username}==${userMap['user1'].age}
<br/> ${userMap['user2'].username}==${userMap['user2'].age}
<br/>
</body>
</html>
EL的内置对象
获取JSP中域中的数据(pageScope,requestScope,sessionScope,applicationScope)
pageContext - WEB开发中的pageContext.
获得web应用名称:${pageContext.request.contextPath}
在Servlet中获得web应用的名称:request.getContextPath();
在jsp页面上获得web应用的名称: ${pageContext.request.contextPath}
EL执行运算符
- 算数运算符 + - * / %
- 逻辑运算符 && || !
- 比较运算符 > < >= <=
- Null运算符 empty
- 三元运算符
<%‐‐再当前jsp导入ArrayList‐‐%>
<%@ page import="java.util.ArrayList" %>
<%@ page contentType="text/html;charset=UTF‐8" language="java" %>
<html>
<head>
<title>el表达式可以执行运算符
<</title>
</head>
<body>
${3==3}<br> ${3>=4}
<br> ${3<5}<br>
${3!=3}<br> ${3+4}
<br> ${3==3&&3<4}<br>
${3==5||3>4}<br>
<%
request.setAttribute("str",null);
request.setAttribute("list",new ArrayList<>());
%>
${empty str}<br>
${empty list}<br>
${str == null? "数据为空 ":str}<br>
</body>
</html>