本文目录导读:

Java JSTL标签使用教程
JSTL(JSP Standard Tag Library)是一组标准的JSP标签库,可以简化JSP页面的开发,下面详细介绍如何使用JSTL标签。
环境配置
1 添加依赖
Maven项目(pom.xml):
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
普通Web项目:
- 下载
jstl-1.2.jar并放入WEB-INF/lib目录 - 或使用Tomcat自带的jstl库
2 在JSP页面引入标签库
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
核心标签库(Core)常用标签
1 输出变量 - <c:out>
<!-- 基本用法 -->
<c:out value="${user.name}" default="未知用户"/>
<!-- 转义输出(防止XSS攻击) -->
<c:out value="${user.description}" escapeXml="true"/>
2 设置变量 - <c:set>
<!-- 设置属性 -->
<c:set var="username" value="张三" scope="session"/>
<c:set var="age" value="25"/>
<!-- 从请求参数获取 -->
<c:set var="searchKeyword" value="${param.keyword}"/>
3 条件判断 - <c:if>
<c:if test="${not empty userList}">
<p>有用户数据</p>
</c:if>
<!-- 简单判断 -->
<c:if test="${user.age >= 18}">
<p>成年人</p>
</c:if>
4 多条件判断 - <c:choose>
<c:choose>
<c:when test="${score >= 90}">
<p>优秀</p>
</c:when>
<c:when test="${score >= 80}">
<p>良好</p>
</c:when>
<c:when test="${score >= 60}">
<p>及格</p>
</c:when>
<c:otherwise>
<p>不及格</p>
</c:otherwise>
</c:choose>
5 循环遍历 - <c:forEach>
<!-- 遍历集合 -->
<c:forEach items="${users}" var="user" varStatus="status">
<tr>
<td>${status.index + 1}</td>
<td>${user.name}</td>
<td>${user.email}</td>
<td>
<c:if test="${status.first}">第一个</c:if>
<c:if test="${status.last}">最后一个</c:if>
</td>
</tr>
</c:forEach>
<!-- 固定次数循环 -->
<c:forEach begin="1" end="5" var="i">
<p>第${i}次循环</p>
</c:forEach>
6 URL处理 - <c:url>
<!-- 构建URL,自动添加上下文路径 -->
<a href="<c:url value='/user/detail'/>">用户详情</a>
<!-- URL重写(支持Session跟踪) -->
<c:url value="/user/edit" var="editUrl">
<c:param name="id" value="${user.id}"/>
<c:param name="action" value="edit"/>
</c:url>
<a href="${editUrl}">编辑</a>
格式化标签(FMT)常用标签
1 数字格式化
<!-- 格式化数字 -->
<fmt:formatNumber value="${price}" type="currency" currencySymbol="¥"/>
<fmt:formatNumber value="${salary}" pattern="#,##0.00"/>
<!-- 解析数字 -->
<fmt:parseNumber value="${inputNumber}" var="parsedNum"/>
2 日期格式化
<!-- 格式化日期 -->
<fmt:formatDate value="${now}" pattern="yyyy-MM-dd HH:mm:ss"/>
<fmt:formatDate value="${birthday}" type="date" dateStyle="long"/>
<!-- 解析日期 -->
<fmt:parseDate value="${dateString}" pattern="yyyy-MM-dd" var="parsedDate"/>
完整案例
用户管理页面示例
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<html>
<head>用户管理</title>
<style>
table { border-collapse: collapse; width: 100%; }
th, td { border: 1px solid #ddd; padding: 8px; text-align: left; }
th { background-color: #f2f2f2; }
.pagination { margin: 20px 0; }
.active { font-weight: bold; }
</style>
</head>
<body>
<h2>用户列表</h2>
<!-- 搜索表单 -->
<form action="<c:url value='/user/list'/>" method="get">
<input type="text" name="keyword" value="${param.keyword}" placeholder="搜索用户..."/>
<button type="submit">搜索</button>
</form>
<!-- 用户表格 -->
<table>
<thead>
<tr>
<th>序号</th>
<th>用户名</th>
<th>邮箱</th>
<th>注册时间</th>
<th>状态</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<c:choose>
<c:when test="${empty users}">
<tr>
<td colspan="6">暂无用户数据</td>
</tr>
</c:when>
<c:otherwise>
<c:forEach items="${users}" var="user" varStatus="status">
<tr>
<td>${status.index + 1}</td>
<td>${user.name}</td>
<td>${user.email}</td>
<td>
<fmt:formatDate value="${user.registerDate}"
pattern="yyyy-MM-dd HH:mm"/>
</td>
<td>
<c:choose>
<c:when test="${user.status == 1}">
<span style="color:green">正常</span>
</c:when>
<c:when test="${user.status == 0}">
<span style="color:gray">未激活</span>
</c:when>
<c:otherwise>
<span style="color:red">禁用</span>
</c:otherwise>
</c:choose>
</td>
<td>
<a href="<c:url value='/user/view'>
<c:param name='id' value='${user.id}'/>
</c:url>">查看</a>
<a href="<c:url value='/user/edit'>
<c:param name='id' value='${user.id}'/>
</c:url>">编辑</a>
<a href="<c:url value='/user/delete'>
<c:param name='id' value='${user.id}'/>
</c:url>" onclick="return confirm('确认删除?')">删除</a>
</td>
</tr>
</c:forEach>
</c:otherwise>
</c:choose>
</tbody>
</table>
<!-- 分页 -->
<div class="pagination">
<c:if test="${currentPage > 1}">
<a href="<c:url value='/user/list'>
<c:param name='page' value='${currentPage - 1}'/>
<c:param name='keyword' value='${param.keyword}'/>
</c:url>">« 上一页</a>
</c:if>
<c:forEach begin="1" end="${totalPages}" var="page">
<c:choose>
<c:when test="${page == currentPage}">
<span class="active">${page}</span>
</c:when>
<c:otherwise>
<a href="<c:url value='/user/list'>
<c:param name='page' value='${page}'/>
<c:param name='keyword' value='${param.keyword}'/>
</c:url>">${page}</a>
</c:otherwise>
</c:choose>
</c:forEach>
<c:if test="${currentPage < totalPages}">
<a href="<c:url value='/user/list'>
<c:param name='page' value='${currentPage + 1}'/>
<c:param name='keyword' value='${param.keyword}'/>
</c:url>">下一页 »</a>
</c:if>
</div>
</body>
</html>
注意事项
- EL表达式:JSTL通常与EL表达式配合使用,确保JSP页面启用EL
- 性能考虑:避免在JSTL标签中写复杂逻辑,保持视图简洁
- 作用域:注意变量作用域(page/request/session/application)
- 版本兼容:不同Servlet容器可能需要不同版本的jstl库
这样,你就可以在JSP页面中灵活使用JSTL标签来简化开发了!
版权声明:足球直播
足球直播
足球直播
足球直播
足球直播
中超直播
中超直播
中超直播
中超直播
中超直播
英超直播
英超直播
英超直播
英超直播
英超直播
德甲直播
德甲直播
德甲直播
德甲直播
德甲直播
西甲直播
西甲直播
西甲直播
西甲直播
西甲直播
意甲直播
意甲直播
意甲直播
意甲直播
意甲直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
足球直播
足球直播
足球直播
足球直播
足球直播
中超直播
中超直播
中超直播
中超直播
中超直播
英超直播
英超直播
英超直播
英超直播
英超直播
德甲直播
德甲直播
德甲直播
德甲直播
德甲直播
西甲直播
西甲直播
西甲直播
西甲直播
西甲直播
意甲直播
意甲直播
意甲直播
意甲直播
意甲直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
足球直播
足球直播
足球直播
足球直播
足球直播
中超直播
中超直播
中超直播
中超直播
中超直播
英超直播
英超直播
英超直播
英超直播
英超直播
德甲直播
德甲直播
德甲直播
德甲直播
德甲直播
西甲直播
西甲直播
西甲直播
西甲直播
西甲直播
意甲直播
意甲直播
意甲直播
意甲直播
意甲直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播