EL表达式,JSTL标签库

EL表达式

Express Language:表达式语言。
作用:代替jsp页面中的表达式脚本在jsp页面中进行数据的输出。

1
2
3
4
5
6
7
8
9
<body>
<%
request.setAttribute("key","value");
%>
jsp表达式输出key的值:<%=
request.getAttribute("key")==null?"":request.getAttribute("key")
%><br/>
EL表达式输出key的值:${key}
</body>

格式:${表达式}
EL表达式在输出空值的时候,输出的是空串,而jsp表达式输出的是null字符串。

运算

关系运算

逻辑运算

算数运算
empty运算:判断一个数据是否为空,为空输出truem,否则输出false
三元运算
“.”点运算和[] 中括号运算符

EL表达式中的11个隐含对象

pageContext对象的使用:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%-- jsp表达式
request.getScheme() 它可以获取请求的协议
request.getServerName() 获取请求的服务器ip 或域名
request.getServerPort() 获取请求的服务器端口号
request.getContextPath() 获取当前工程路径
request.getMethod() 获取请求的方式(GETPOST
request.getRemoteHost() 获取客户端的ip 地址
session.getId() 获取会话的唯一标识
--%>


<%-- EL表达式--%>
<%
pageContext.setAttribute("req", request);
%>

1. 协议:${req.scheme}<br/>
2. 服务器ip:${pageContext.request.serverName}<br/>
3. 服务器端口:${pageContext.request.serverPort}<br/>
4. 获取工程路径:${pageContext.request.contextPath}<br/>
5. 获取请求方法:${pageContext.request.method}<br/>
6. 获取客户端ip 地址:${pageContext.request.remoteHost}<br/>
7. 获取会话的id 编号:${pageContext.session.id}
</body>
</html>

JSTL标签库

EL表达式是为了替换jsp中的表达式,而标签库是为了替换jsp中的代码脚本。

在jsp 标签库中使用taglib 指令引入标签库

1
2
3
4
5
6
CORE 标签库
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
FMT 标签库
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
FUNCTIONS 标签库
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

core核心库使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
<%@ page import="java.util.HashMap" %>
<%@ page import="java.util.Map" %>
<%@ page import="bean.Student" %>
<%@ page import="java.util.List" %>
<%@ page import="java.lang.reflect.Array" %>
<%@ page import="java.util.ArrayList" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%-- if判断 --%>
<c:if test="${1==1}">
<h1>1==1</h1>
</c:if>

<%-- 多路判断--%>
<c:choose>
<c:when test=""></c:when>
<c:when test=""></c:when>
<c:otherwise></c:otherwise>
</c:choose>

<%-- foreach遍历输出--%>
<c:forEach begin="1" end="10" var="i">
${i}<br/>
</c:forEach>

<%--遍历数组--%>
<%
request.setAttribute("arr",new String[]{"Tom","Taylor","Troye"});
%>
<c:forEach items="${requestScope.arr}" var="item">
${item}<br/>
</c:forEach>

<%-- 遍历Map--%>
<%
Map<String,String> map = new HashMap<String,String>();
map.put("key1","value1");
map.put("key2","value2");
map.put("key3","value3");
// for(Map.Entry<String,String> entry:map.entrySet()){
//
// }
request.setAttribute("map",map);
%>
<c:forEach items="${requestScope.map}" var="entry">
键:${entry.key}
值:${entry.value}
<br/>
</c:forEach>

<%-- 遍历List--%>
<%
List<Student> stuList = new ArrayList<Student>();
for (int i = 0; i < 5; i++) {
stuList.add(new Student(i,"username"+i,"password"+i, 18+i));
}
request.setAttribute("students",stuList);
%>
<table width="500px" border="1px solid black" cellspacing="0">
<tr>
<th>编号</th>
<th>用户名</th>
<th>密码</th>
<th>年龄</th>
<th>状态信息</th>
</tr>
<c:forEach items="${requestScope.students}" var="stu" varStatus="status">
<tr>
<td>${stu.id}</td>
<td>${stu.username}</td>
<td>${stu.password}</td>
<td>${stu.age}</td>
<td>${status.count}</td>
</tr>
</c:forEach>
</table>
</body>
</html>