JSTL标签
# JSTL简介
【概念】:JavaServer Pages Tag Library JSP标准标签库,是由 Apache组织提供的开源的免费的jsp标签
【作用】:用于简化和替换jsp页面上的java代码
【使用步骤】
- 导入jst1相关jar包
- 引入标签库:taglib指合
<‰@ taglib @‰>
- 使用标签
# 常用的JSTL标签
if
c:if
标签属性
test时候必须属性,接受 boolean表达式
- 如果表达式为true,则显示if 标签体内容;如果为 false,则不显示标签体内容
- 一般情况下,test属性值会结合EL表达式一起使用
注意:c:if
标签没有else情况,想要else情况,则可以在定义一个c:if
标签
choose (switch)
<%--
完成数字编号对应星期几案例:
1.域中存储数字
2.使用 choose标签取出数字 ---相当于switch声明
3.使用when标签做数字判断 ---相当于case
4.otherwise标签做其他情况的声明 ---相当于 defau1t
--%>
<%
request.setAttribute("number" , 5);
%>
<c:choose>
<c:when test="${number == 1}">星期一</c:when>
<c:when test="${number == 2}">星期二</c:when>
<c:when test="${number == 3}">星期三</c:when>
<c:when test="${number == 4}">星期四</c:when>
<c:when test="${number == 5}">星期五</c:when>
<c:when test="${number == 6}">星期六</c:when>
<c:when test="${number == 7}">星期日</c:when>
<c:otherwise>input is error!</c:otherwise>
</c:choose>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
foreach (for loop):相当于java代码的for语句
I. 完成重复的操作
for(int i = 0; i < 10; i++)
属性
begin:开始值
end:结束值
var:临时变量
step:步长
varStatus:循环状态对象
index:容器中元素的索引(从0开始)
count:计数器,记录循环次数(从1开始)
II. 遍历容器List
- items:容器对象
- var:容器中元素的临时变量
- varstatus:循环状态对象
- index:容器中元素的索引,从0开始
- count:循环次数,从1开始
# 表格案例
需求:在 request域中有一个存有User对象的List集合。需要使用JSTL+EL将List集合数据展示到JSP页面的表格Tablel
User
public class User {
private String name;
private int age;
private Date birthday;
public User() { }
public User(String name, int age, Date birthday) {
this.name = name;
this.age = age;
this.birthday = birthday;
}
/**
* 逻辑视图:在页面上按需求输出数据
* @return
*/
public String getBirStr() {
if(birthday != null) {
SimpleDateFormat simpleDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return simpleDate.format(birthday);
}else {
return "";
}
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int ade) {
this.age = ade;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", ade=" + age +
", birthday=" + birthday +
'}';
}
}
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
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
index.jsp
<%@ page import="java.util.List" %>
<%@ page import="com.iqqcode.domain.User" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.Date" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>Table Demo</title>
</head>
<body>
<%
List list = new ArrayList();
list.add(new User("A" ,18, new Date()));
list.add(new User("B" ,22, new Date()));
list.add(new User("C" ,95, new Date()));
list.add(new User("D" ,26, new Date()));
request.setAttribute("list", list);
%>
<table border="1" align="center" width="500">
<%--表头--%>
<tr>
<th>编号</th>
<th>姓名</th>
<th>年龄</th>
<th>生日</th>
</tr>
<%--数据行--%>
<c:forEach items="${list}" var="user" varStatus="s">
<%--更改背景色--%>
<c:if test="${s.count % 2 == 0}">
<tr bgcolor="#ffebcd">
<td>${s.count}</td>
<td>${user.name}</td>
<td>${user.age}</td>
<td>${user.birStr}</td>
</tr>
</c:if>
<c:if test="${s.count % 2 != 0}">
<tr bgcolor="#7fffd4">
<td>${s.count}</td>
<td>${user.name}</td>
<td>${user.age}</td>
<td>${user.birStr}</td>
</tr>
</c:if>
</c:forEach>
</table>
</body>
</html>
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
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
编辑 (opens new window)
上次更新: 2021/06/27, 10:49:09