一、简介
JSTL 标签库 全称是 JSP Standard Tag Library ,即 JSP 标准标签库。
EL 表达式主要是为了替换 jsp 中的表达式脚本,而标签库则是为了替换jsp中的代码脚本。这样使得整个 jsp 页面 变得更加简洁,从而提高程序的可读性,降低程序的维护难度。
JSTL 由五个不同功能的标签库组成:
功能范围 | URI | 前缀 | taglib 指令 |
---|---|---|---|
核心标签库(重点) | http://java.sun.com/jsp/jstl/core | c | <%@ taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core” %> |
格式化 | http://java.sun.com/jsp/jstl/fmt | fmt | <%@ taglib prefix=“fmt” uri=“http://java.sun.com/jsp/jstl/fmt” %> |
函数 | http://java.sun.com/jsp/jstl/functions | fn | <%@ taglib prefix=“fn” uri=“http://java.sun.com/jsp/jstl/functions” %> |
数据库(不使用) | http://java.sun.com/jsp/jstl/sql | sql | <%@ taglib prefix=“sql” uri=“http://java.sun.com/jsp/jstl/sql” %> |
XML(不使用) | http://java.sun.com/jsp/jstl/xml | x | <%@ taglib prefix=“x” uri=“http://java.sun.com/jsp/jstl/xml” %> |
二、JSTL 标签库的使用
(一)使用步骤
-
先下载 jstl 标签库的 jar 包
下载地址:http://tomcat.apache.org/taglibs/
①进入下载地址后会出现以下页面,点击红框中的“Standard”按钮进入jstl版本页面。
②进入jstl版本界面后,点击“download”按钮进入下载界面
③进入下载界面后,会出现jstl各个jar包的下载连接,直接点击需要下载的jar包即可下载,一般只需下载Impl和Spec即可。
Impl: taglibs-standard-impl-1.2.5.jar JSTL实现类库
Spec: taglibs-standard-spec-1.2.5.jar JSTL标准接口
EL: taglibs-standard-jstlel-1.2.5.jar JSTL1.0标签-EL相关
Compat: taglibs-standard-compat-1.2.5.jar 兼容版本 -
导入下载的jar包
将下载的jar包粘贴进WEB-INF下的lib目录下,并add as library
3.使用 taglib 指令引入标签库
至此,jstl标签库就可以使用了
(二)core 核心库
1.<c:set />(很少使用)
作用:set 标签可以往域中保存数据
案例:
2.<c:if />
作用:if 标签可以用来做 if 判断
案例:
3.<c:choose> <c:when> <c:otherwise>标签
作用:多路判断,跟 switch … case … default 非常接近
案例:
4.<c:forEach />
作用:遍历输出
(1)遍历 1 到 10,输出
案例:
(2)遍历 Object 数组
案例:
(3)遍历 Map 集合
案例:
(4)遍历 List 集合
案例:List 中存放 Student 类,有属性:编号,用户名,密码,年龄, 电话信息
Student类:
public class Student {
private Integer id;
private String username;
private String password;
private Integer age;
private String phone;
public Student(Integer id, String username, String password, Integer age, String phone) {
this.id = id;
this.username = username;
this.password = password;
this.age = age;
this.phone = phone;
}
public Student() {
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
@Override
public String toString() {
return "Student{" +
"id=" + id +
", username='" + username + '\'' +
", password='" + password + '\'' +
", age=" + age +
", phone='" + phone + '\'' +
'}';
}
}
forEach标签中的status属性是LoopTagSupport类的内部类,并实现了LoopTagStatus接口
LoopTagStatus接口有以下方法:
那么,通过EL表达式 status的点运算可以调用以上方法: