1. 概念
JavaServer Pages Tag Library
JSP标准标签库
由Apache
组织提供的开源的免费的jsp
标签 <标签>
2. 作用
3. 使用步骤
<br />1. 导入`jstl`相关`jar`包
2. 引入标签库:taglib
指令 <%@ taglib %>
3. 使用标签
Taglib
指令引入一个自定义标签集合的定义,包括库路径、自定义标签。
<%@ taglib uri="uri" prefix="prefixOfTag" %>
4. 常用的JSTL标签
**4.1. **`**if**`**:** 相当于`java`代码的`if`语句<br />
1. 属性:
- **test **必须属性,接受`boolean`表达式 。 [ `test`可能会结合`el`表达式一起使用 ]
-
true
,显示标签体内容
- `false`,不显示标签体内容
2. 注意:
- **c:if **标签没有**else**情况
- 想要`else`情况,则可以在定义一个`c:if`标签
<c:if test="${not empty list}">
输出list
</c:if>
<c:if test="${number %2!=0}">
${number}奇数
</c:if>
**4.2. **`**choose**`**: **相当于`java`代码的`switch`语句<br />
1. 使用choose
标签声明 相当于switch
声明
2. 使用when
标签做判断 相当于case
3. 使用otherwise
标签做其他情况的声明 相当于default
<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>
**4.3. **`**foreach**`**: **相当于`java`代码的`for`语句
1. 常规循环<br />begin : 开始值<br />end: 结束值<br />var: 临时变量<br />step: 步长<br />varStatus:状态
- index:容器中元素的索引,从 `0` 开始 。
- count:循环次数,从 `1` 开始 。
2. 增强循环
items: 容器对象
var : 容器中元素的临时变量
varStatus:状态
- index:容器中元素的索引,从 `0` 开始 。
- count:循环次数,从 `1` 开始 。
//1.普通for循环
for(int i=0;i<10;i++){
//....
}
//==>>
<c:forEach begin="1" end="10" var="i" step="1">
${i}
</c:forEach>
//2.增强for循环
for(String i:list){
//....
}
//==>>
<c:forEach item="${list}" var="str" varStatus="status">
${status.index} ${status.count} ${str}
</c:forEach>
5. 练习
<br />需求:<br />在`request`域中有一个存有`User`对象的`List`集合。需要使用`jstl+el`将`list`集合数据展示到`jsp`页面的表格`table`中 。
<%@ page import="cn.User" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ 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>test</title>
</head>
<body>
<%
List list = new ArrayList();
list.add(new User("张三",23,new Date()));
list.add(new User("李四",24,new Date()));
list.add(new User("王五",25,new Date()));
request.setAttribute("list",list);
%>
<table border="1" width="500" align="center">
<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>
效果图: