概述
- 概念:JavaServer Pages Tag Library
JSP标准标签库
- 是由Apache组织提供的开源的免费的 jsp 标签 <标签>
- 作用:用于简化和替换 jsp 页面上的 java 代码
- 使用步骤:
- 导入 jstl 相关的 jar 包:
jstl-1.2.jar
、standard-1.1.2.jar
- 引入标签库:taglib指令:
<%@ taglib prefix="" ="" %>
- 使用标签
常用的JSTL标签
-
if
:相当于 java 代码的 if 语句
- 属性:
test
:必须属性,接受 boolean 表达式
- 如果表达式为 true,则显示 if 标签体的内容
- 如果表达式为 false,则不显示 if 标签体的内容
- 一般情况下,test 属性值会结合 el 表达式一起使用
- 注意:
c:if
标签没有else情况,想要else情况,则可以再定义一个 c:if
标签
-
choose
:相当于 java 代码的 switch 语句
- 使用
choose
标签取出数据 相当于 switch
的声明
- 使用
when
标签做判断 相当于 case
- 使用
otherwise
标签做其他情况的声明 相当于 default
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>choose标签</title>
</head>
<body>
<%--
完成数字编号对应星期几的案例
1. 域中存储数字编号
2. 使用choose标签取出数据 相当于 switch 的声明
3. 使用when标签做判断 相当于 case
4. 使用otherwise标签做其他情况的声明 相当于 default
--%>
<%
request.setAttribute("number", 12);
%>
<c:choose>
<c:when test="${number == 1}">星期一</c:when>
<c:when test="${number == 2}">星期二</c:when>
<c:when test="${number == 3}">星期三</c:when>
<c:when test="${number == 4}">星期四</c:when>
<c:when test="${number == 5}">星期五</c:when>
<c:when test="${number == 6}">星期六</c:when>
<c:when test="${number == 7}">星期日</c:when>
<c:otherwise>输入的数字有误</c:otherwise>
</c:choose>
</body>
</html>
foreach
:相当于java代码的for语句
- 完成重复的操作
- 遍历容器
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.List" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>foreach标签</title>
</head>
<body>
<%--
foreach:相当于java代码的for语句
1. 完成重复的操作
for(int i = 0; i < 10; i++) {
}
* 属性:
begin:开始值
end:结束值
var:临时变量
step:步长
varStatus:循环状态对象
index:容器中元素的索引,从0开始
count:循环次数,从1开始
2. 遍历容器
List<User> list;
for (User user:list) {
}
* 属性:
items:容器对象
var:容器中元素的临时变量
varStatus:循环状态对象
index:容器中元素的索引,从0开始
count:循环次数,从1开始
--%>
<c:forEach begin="1" end="10" var="i" step="1">
${i} <br/>
</c:forEach>
<hr/>
<%
List list = new ArrayList<>();
list.add("aaa");
list.add("bbb");
list.add("ccc");
request.setAttribute("list", list);
%>
<c:forEach items="${list}" var="str" varStatus="s">
${s.index} ${s.count} ${str} <br/>
</c:forEach>
</body>
</html>
JSTL练习
<%@ page import="com.my.domain.User" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.Date" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>jstl练习</title>
</head>
<body>
<%
/*
需求:
在request域中用List集合存储一些User对象。
需要使用jstl+el将List集合数据展示到jsp页面的表格table中
*/
List<User> list = new ArrayList<>();
list.add(new User("张三", 20, new Date()));
list.add(new User("李四", 24, new Date()));
list.add(new User("王五 ", 23, new Date()));
request.setAttribute("list", list);
%>
<table border="1" align="center" width="500">
<tr>
<th>编号</th>
<th>姓名</th>
<th>年龄</th>
<th>生日</th>
</tr>
<%--展示数据--%>
<c:forEach items="${list}" var="user" varStatus="s">
<c:if test="${s.count % 2 == 0}">
<tr bgcolor="red">
<td>${s.count}</td>
<td>${user.name}</td>
<td>${user.age}</td>
<td>${user.birStr}</td>
</tr>
</c:if>
<c:if test="${s.count % 2 != 0}">
<tr bgcolor="green">
<td>${s.count}</td>
<td>${user.name}</td>
<td>${user.age}</td>
<td>${user.birStr}</td>
</tr>
</c:if>
</c:forEach>
</table>
</body>
</html>