news 2026/4/17 22:48:28

JSTL 标签库详解与实战案例

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
JSTL 标签库详解与实战案例

目录

一、JSTL 基础认知

1. 什么是 JSTL?

2. JSTL 的 5 大标签库

二、JSTL 下载与使用

1. 依赖包下载

2. 基于Maven项目

3. 使用

三、JSTL 核心标签库实战

前置准备:JavaBean 实体类

1. MyUser.java(用户实体)

2. Product.java(商品实体)

3. Person.java(人员实体)

(一)输入输出标签

1. :输入标签

2. :输出标签

商品信息展示案例

3. :移除变量

4. :异常捕获

(二)流程控制标签

1. :单条件判断

2. :多条件判断

(三)迭代标签:

1. 循环指定次数

2. 循环访问集合元素

集合遍历:人员信息列表展示案例


一、JSTL 基础认知

1. 什么是 JSTL?

JSTL是 SUN 公司定义的JSP 标准标签库,用于替代JSP 脚本中的Java 代码(如:<% java代码 %>。通过自定义标签(如:<c:set><c:out>)简化 JSP 开发,提高页面代码可读性与可维护性,常与 EL 表达式配合使用。

2. JSTL 的 5 大标签库

JSTL 标签库标签库的 URI前缀用途
核心标签库http://java.sun.com/jsp/jstl/corec流程控制、变量赋值、URL 管理等(最常用)
格式化标签库http://java.sun.com/jsp/jstl/fmtfmt日期 / 数字格式化、国际化
函数标签库http://java.sun.com/jsp/jstl/functionsfn字符串处理函数(如截取、替换)
SQL 标签库http://java.sun.com/jsp/jstl/sqlsql数据库操作
XML 标签库http://java.sun.com/jsp/jstl/xmlxmlXML 文档处理

二、JSTL 下载与使用

1. 依赖包下载

下载地址:Apache官网

  1. 将两个 jar 包复制到项目的WEB-INF/lib目录下
  2. 在 IDEA 中,右键 jar 包 →Add as Library完成依赖导入

2. 基于Maven项目

如果已经配置了Maven只需在pom.xml文件中引入依赖即可:

<dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <dependency> <groupId>taglibs</groupId> <artifactId>standard</artifactId> <version>1.1.2</version> </dependency>

3. 使用

在 JSP 页面顶部引入标签库即可使用:

标签库的uri和prefix参照表:JSTL 的 5 大标签库

格式: <%-- 引入核心标签库 --%> <%@ taglib prefix="前缀" uri="标签库的uri" %> <%-- 启用EL表达式 --%> <%@ page isELIgnored="false" %>

三、JSTL 核心标签库实战

核心标签库是开发中最常用的部分,分为输入输出标签、流程控制标签、迭代标签三大类。

前置准备:JavaBean 实体类

我们先定义项目中用到的实体类,用于数据封装:

1. MyUser.java(用户实体)

package com.example.javabean0415; public class MyUser { private String username; private String password; // 无参构造 public MyUser(){} // 有参构造 public MyUser(String username,String password){ this.username=username; this.password=password; } // getter/setter 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;} }

2. Product.java(商品实体)

package com.example.javabean0415; public class Product { private String id; private String name; private double score; private int num; public Product(){} public Product(String id, String name, double score, int num) { this.id = id; this.name = name; this.score = score; this.num = num; } // getter/setter public String getId() {return id;} public void setId(String id) {this.id = id;} public String getName() {return name;} public void setName(String name) {this.name = name;} public double getScore() {return score;} public void setScore(double score) {this.score = score;} public int getNum() {return num;} public void setNum(int num) {this.num = num;} }

3. Person.java(人员实体)

package com.example.javabean0415; public class Person { private String id; private String name; private int age; private double height; private String phone; public Person(){} public Person(String id,String name,int age,double height,String phone){ this.id=id; this.name=name; this.age=age; this.height=height; this.phone=phone; } // getter/setter public String getId() {return id;} public void setId(String id) {this.id = id;} public String getName() {return name;} public void setName(String name) {this.name = name;} public int getAge() {return age;} public void setAge(int age) {this.age = age;} public double getHeight() {return height;} public void setHeight(double height) {this.height = height;} public String getPhone() {return phone;} public void setPhone(String phone) {this.phone = phone;} }

(一)输入输出标签

用于页面数据的赋值、输出、移除、异常捕获,包含 4 个核心标签:<c:set><c:out><c:remove><c:catch>

1.<c:set>:输入标签

用于设置某个对象的作用范围(page/request/session/application),或修改对象的属性值。

格式:

<%-- 1. 基础赋值:向request域设置变量 --%> 格式:<c:set value="变量值" var="变量名" scope="request"/> <%-- 2. 标签体赋值:为变量名设置内容--%> 格式: <c:set var="变量名" scope="范围"> 内容 原样显示 </c:set> <%-- 3. 修改JavaBean属性(value方式)--%> <c:set target="${对象名}" property="属性名" value="属性值"/> <%-- 4. 修改JavaBean属性(标签体方式) --%> <c:set target="${对象名}" property="属性名"> 内容 </c:set>

代码

2.<c:out>:输出标签

作用:输出数据,支持默认值、转义特殊字符。

常用属性

  • value:设置输出内容
  • default:数据为空时,展示默认值
  • escapeXml:是否转义 HTML 特殊字符,不让它们变成 HTML 标签,默认 true

实战代码

运行结果:

商品信息展示案例

ProductServlet.java

product.jsp

运行结果:

3.<c:remove>:移除变量

作用:移除变量。

4.<c:catch>:异常捕获

作用:捕获标签体内的异常,存储到变量中不会抛出到页面。


(二)流程控制标签

用于页面逻辑判断,包含:<c:if>(单分支)、<c:choose>(多分支)

1.<c:if>:单条件判断

条件为true时输出内容

常用属性

  • test:判断条件(EL 表达式)
  • var:存储判断结果(true/false)

实战代码

运行结果:

2.<c:choose>:多条件判断

配合<c:when><c:otherwise>使用

<c:when>等价于if/else if语句,包含一个test属性

<c:otherwise>没有属性,相当于else

实战代码

输出:良好


(三)迭代标签:<c:forEach>

作用:循环遍历集合),或执行指定次数的循环

常用属性

  • begin:循环起始值
  • end:循环结束值
  • step:步长
  • items:要遍历的集合
  • var:遍历的临时变量
  • varStatus:循环状态对象(count:序号、index:索引、first/last:是否首尾)

1. 循环指定次数

<%-- 循环5次,输出Hello --%> <c:forEach begin="1" end="5" step="1"> Hello world!<br> </c:forEach>

运行结果:

2. 循环访问集合元素

运行结果:

集合遍历:人员信息列表展示案例

PersonServlet.java

person.jsp

打印出所有人员的详细信息

运行结果:


版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/17 22:43:09

day3-实训学习记录

重定向标准输入重定向<<并不表示追加&#xff0c;而是表示输入结束的意思&#xff0c;即作为一个结束符这条命令在查找文件的同时&#xff0c;把正确的结果既保存到文件中&#xff0c;又统计了行数&#xff0c;同时把错误提示显示在屏幕上管道 | 只传递标准输出&#xff…

作者头像 李华
网站建设 2026/4/17 22:42:05

CFturbo 2024保姆级教程:从流量扬程到三维叶轮,手把手搞定离心泵水力设计

CFturbo 2024离心泵水力设计全流程实战指南 离心泵作为工业领域最常用的流体输送设备之一&#xff0c;其水力设计质量直接影响着泵的效率、寿命和运行稳定性。传统的手工设计方法不仅耗时费力&#xff0c;而且难以快速验证设计方案的合理性。CFturbo作为专业的流体机械设计软件…

作者头像 李华
网站建设 2026/4/17 22:40:14

AI 净界高清输出:RMBG-1.4 生成带 Alpha 通道 PNG 展示

AI 净界高清输出&#xff1a;RMBG-1.4 生成带 Alpha 通道 PNG 展示 你是不是也遇到过这样的烦恼&#xff1f;拍了一张不错的照片&#xff0c;想换个背景发朋友圈&#xff0c;或者做一张电商主图&#xff0c;结果抠图抠得边缘全是锯齿&#xff0c;头发丝和背景糊成一团&#xf…

作者头像 李华
网站建设 2026/4/17 22:37:21

打电话不想用手机?网络电话软件推

网络电话有哪些&#xff1f;推荐这5类主流选择网络电话选择多样&#xff0c;从免费社交软件到专业通话App均可实现。若追求隐私与通话质量&#xff0c;推荐千寻电话&#xff0c;无需SIM卡即可高清通话&#xff0c;并能隐藏真实号码保护隐私。Q1: 网络电话主要有哪些类型&#x…

作者头像 李华