JSTL 标签库详解与实战案例

张开发
2026/4/17 22:48:31 15 分钟阅读

分享文章

JSTL 标签库详解与实战案例
目录一、JSTL 基础认知1. 什么是 JSTL2. 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. 什么是 JSTLJSTL是 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官网将两个 jar 包复制到项目的WEB-INF/lib目录下在 IDEA 中右键 jar 包 →Add as Library完成依赖导入2. 基于Maven项目如果已经配置了Maven只需在pom.xml文件中引入依赖即可dependency groupIdjavax.servlet/groupId artifactIdjstl/artifactId version1.2/version /dependency dependency groupIdtaglibs/groupId artifactIdstandard/artifactId version1.1.2/version /dependency3. 使用在 JSP 页面顶部引入标签库即可使用标签库的uri和prefix参照表JSTL 的 5 大标签库格式 %-- 引入核心标签库 --% % taglib prefix前缀 uri标签库的uri % %-- 启用EL表达式 --% % page isELIgnoredfalse %三、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.usernameusername; this.passwordpassword; } // 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.idid; this.namename; this.ageage; this.heightheight; this.phonephone; } // 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:catch1.c:set输入标签用于设置某个对象的作用范围page/request/session/application或修改对象的属性值。格式%-- 1. 基础赋值向request域设置变量 --% 格式c:set value变量值 var变量名 scoperequest/ %-- 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.javaproduct.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 begin1 end5 step1 Hello worldbr /c:forEach运行结果2. 循环访问集合元素运行结果集合遍历人员信息列表展示案例PersonServlet.javaperson.jsp打印出所有人员的详细信息运行结果

更多文章