【笔记】JavaWeb的JSTL

前言

JSP标准标签库(JSP Standard Tag Library)是Java EE网络应用程序开发平台的组成部分。它在JSP规范的基础上,扩充了一个JSP的标签库来完成一些通用任务,比如XML数据处理、条件执行、数据库访问、循环和国际化。
JSTL是在JCP下,作为JSR 52被开发出来的。(维基百科

准备工作

直接引入jar包

  • 在项目中导入jstl-1.2.jarjar包

在Maven中引入依赖

pom.xml
1
2
3
4
5
6
7
8
9
10
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
</dependency>

导入JSTL标签库

  • 在jsp的HTML代码之上添加代码

prefix="c":指定前缀,通常指定为c

1
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

域中数据的操作

  • 用于往域中添加数据或修改已有数据
  • 默认存入pageContext域中

<key>:域中数据的键
<value>:域中数据键对应的值

1
<c:set var="<key>" value="<value>" />

向其他域存入或修改数据

<name>:其他域的名称

page:pageContext域
resquest:request域
session:session域
application:application域

1
<c:set var="<key>" value="<value>" scope="<name>" />

判断语句

if语句

<el>:利用EL表达式,做判断。如果值为true,则输出标签中的内容

1
2
3
<c:if test="<el>">
...
</c:if>

choose语句(相当于if else)

  • 利用<c:otherwise></c:otherwise>语句取反
1
2
3
4
5
6
7
8
<c:choose>
<c:when test="<el>">
...
</c:when>
<c:otherwise>
...
</c:otherwise>
</c:choose>

循环语句

普通的方式

begin:开始下标
end:结尾下标
var:指定的变量
step:步进数,默认为1

1
2
3
<c:forEach begin="" end="" step="" var="i">
${i}
</c:forEach>

迭代的方式

items:通过EL表达式,指定需要遍历的数组或集合
var:指定的变量

1
2
3
<c:forEach items="" var="value">
${value}
</c:forEach>

迭代对象中的属性

  • 如果迭代的是一个对象中的属性,需要给实体类定义get方法
src/main/java/pojo/User.java
1
2
3
4
5
6
7
8
9
10
11
12
13
public class User {

private Integer id;
private String name;

public Integer getId() {
return id;
}

public String getName() {
return name;
}
}
src/main/resource/xxx.jsp
1
2
3
<c:forEach items="" var="user">
${user.id}
</c:forEach>
  • ${user.id}相当于调用getId()方法

当前遍历状态

varStatus:当前遍历状态

count:返回当前是第几次遍历,从1开始
index:返回遍历的索引,从0开始
first:只有第一次遍历返回true
last:只有最后一次遍历返回true

1
2
3
4
5
6
7
<c:forEach items="" var="" varStatus="vs">
${vs.index}
${vs.count}
${vs.first}
${vs.last}
...
</c:forEach>

完成