JSP Standard Tag Library (JSTL) 封装了 JSP 应用的通用核心功能(迭代、条件判断、国际化、数据库操作、XML 处理等),用标签替代 Scriptlet,使页面更简洁、易维护。
jakarta-taglibs-standard-1.1.2.zip(官方或本站)。standard.jar 和 jstl.jar 放入 WEB-INF/lib/。web.xml 中配置 TLD 映射(或依赖 Servlet 容器自动加载,现代容器通常无需此步)。<%@ taglib prefix="c" uri="https://java.sun.com/jsp/jstl/core" %>prefix="c" uri="https://java.sun.com/jsp/jstl/core"| 标签 | 功能描述 |
|---|---|
<c:out> | 输出数据,类似 <%= %>,支持转义 |
<c:set> | 设置变量值 |
<c:remove> | 移除变量 |
<c:catch> | 捕获异常,存入变量 |
<c:if> | 条件判断 |
<c:choose> / <c:when> / <c:otherwise> | 多路选择结构 |
<c:import> | 引入 URL 内容 |
<c:forEach> | 基础迭代(List、Map、数组、范围) |
<c:forTokens> | 按分隔符分割字符串迭代 |
<c:param> | 为 import/redirect 传参 |
<c:redirect> | 重定向 |
<c:url> | 构建 URL(自动加 Session ID) |
prefix="fmt" uri="https://java.sun.com/jsp/jstl/fmt"| 标签 | 功能描述 |
|---|---|
<fmt:formatNumber> | 格式化数字/货币/百分比 |
<fmt:parseNumber> | 解析字符串为数字 |
<fmt:formatDate> | 格式化日期时间 |
<fmt:parseDate> | 解析字符串为日期 |
<fmt:bundle> | 绑定资源包 |
<fmt:setLocale> | 指定区域设置 |
<fmt:setBundle> | 加载资源包 |
<fmt:timeZone> / <fmt:setTimeZone> | 指定/设置时区 |
<fmt:message> | 输出国际化消息 |
<fmt:requestEncoding> | 设置请求编码 |
prefix="sql" uri="https://java.sun.com/jsp/jstl/sql"注意:生产环境不建议在 JSP 直接写 SQL,此处仅作功能介绍。
| 标签 | 功能描述 |
|---|---|
<sql:setDataSource> | 配置数据源 |
<sql:query> | 执行查询 |
<sql:update> | 执行增删改 |
<sql:param> | 设置参数(防注入) |
<sql:dateParam> | 设置日期参数 |
<sql:transaction> | 事务控制 |
prefix="x" uri="https://java.sun.com/jsp/jstl/xml"需额外放入 XercesImpl.jar、xalan.jar 至 Tomcat lib 目录。
| 标签 | 功能描述 |
|---|---|
<x:out> | 输出 XPath 表达式结果 |
<x:parse> | 解析 XML 文档 |
<x:set> | 设置 XPath 变量 |
<x:if> | XPath 条件判断 |
<x:forEach> | 迭代 XML 节点 |
<x:choose/when/otherwise> | XML 多路选择 |
<x:transform> | 应用 XSLT 转换 |
<x:param> | XSLT 参数 |
prefix="fn" uri="https://java.sun.com/jsp/jstl/functions"常用字符串处理函数:
| 函数 | 描述 |
|---|---|
fn:contains(str, substr) | 是否包含子串 |
fn:containsIgnoreCase(...) | 忽略大小写包含判断 |
fn:startsWith/endsWith | 前缀/后缀判断 |
fn:indexOf | 子串首次出现位置 |
fn:join/split | 数组转字符串 / 字符串分割成数组 |
fn:length | 字符串/集合长度 |
fn:replace | 字符串替换 |
fn:substring/Before/After | 子串截取 |
fn:toLowerCase/UpperCase | 大小写转换 |
fn:trim | 去首尾空白 |
<c:forEach> 遍历 List<%@ taglib prefix="c" uri="https://java.sun.com/jsp/jstl/core" %>
<ul>
<c:forEach var="user" items="${userList}">
<li>${user.name} - ${user.email}</li>
</c:forEach>
</ul>
JSTL 是 JSP 开发的基石,掌握核心标签(c:forEach、c:if/choose、c:set/out)和格式化标签即可覆盖 90% 页面开发需求。现代开发建议配合 EL 表达式使用,彻底杜绝 Scriptlet。