1. 概念

JavaServer Pages Tag Library JSP标准标签库
Apache组织提供的开源的免费的jsp标签 <标签>

2. 作用

用于简化和替换jsp页面上的Java代码

3. 使用步骤

  1. <br />1. 导入`jstl`相关`jar`包


2. 引入标签库:taglib指令 <%@ taglib %>
3. 使用标签

Taglib指令引入一个自定义标签集合的定义,包括库路径、自定义标签。

  1. <%@ taglib uri="uri" prefix="prefixOfTag" %>

4. 常用的JSTL标签

  1. **4.1. **`**if**`**:** 相当于`java`代码的`if`语句<br />


1. 属性:

  1. - **test **必须属性,接受`boolean`表达式 [ `test`可能会结合`el`表达式一起使用 ]
  2. -

true ,显示标签体内容

  1. - `false`,不显示标签体内容
  2. 2. 注意:
  3. - **c:if **标签没有**else**情况
  4. - 想要`else`情况,则可以在定义一个`c:if`标签
  1. <c:if test="${not empty list}">
  2. 输出list
  3. </c:if>
  4. <c:if test="${number %2!=0}">
  5. ${number}奇数
  6. </c:if>
  1. **4.2. **`**choose**`**: **相当于`java`代码的`switch`语句<br />


1. 使用choose标签声明 相当于switch声明
2. 使用when标签做判断 相当于case
3. 使用otherwise标签做其他情况的声明 相当于default

  1. <c:choose>
  2. <c:when test="${number==1}"> 星期一 </c:when>
  3. <c:when test="${number==2}"> 星期二 </c:when>
  4. <c:when test="${number==3}"> 星期三 </c:when>
  5. <c:when test="${number==4}"> 星期四 </c:when>
  6. <c:when test="${number==5}"> 星期五 </c:when>
  7. <c:when test="${number==6}"> 星期六 </c:when>
  8. <c:when test="${number==7}"> 星期日 </c:when>
  9. <c:otherwise> 数字输入有误 </c:otherwise>
  10. </c:choose>
  1. **4.3. **`**foreach**`**: **相当于`java`代码的`for`语句


  1. 1. 常规循环<br />begin 开始值<br />end 结束值<br />var 临时变量<br />step 步长<br />varStatus:状态
  2. - index:容器中元素的索引,从 `0` 开始
  3. - count:循环次数,从 `1` 开始
  4. 2. 增强循环

items: 容器对象
var : 容器中元素的临时变量
varStatus:状态

  1. - index:容器中元素的索引,从 `0` 开始
  2. - count:循环次数,从 `1` 开始
  1. //1.普通for循环
  2. for(int i=0;i<10;i++){
  3. //....
  4. }
  5. //==>>
  6. <c:forEach begin="1" end="10" var="i" step="1">
  7. ${i}
  8. </c:forEach>
  9. //2.增强for循环
  10. for(String i:list){
  11. //....
  12. }
  13. //==>>
  14. <c:forEach item="${list}" var="str" varStatus="status">
  15. ${status.index} ${status.count} ${str}
  16. </c:forEach>

5. 练习

  1. <br />需求:<br />在`request`域中有一个存有`User`对象的`List`集合。需要使用`jstl+el`将`list`集合数据展示到`jsp`页面的表格`table`中 。
  1. <%@ page import="cn.User" %>
  2. <%@ page import="java.util.List" %>
  3. <%@ page import="java.util.ArrayList" %>
  4. <%@ page import="java.util.Date" %>
  5. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  6. <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  7. <html>
  8. <head>
  9. <title>test</title>
  10. </head>
  11. <body>
  12. <%
  13. List list = new ArrayList();
  14. list.add(new User("张三",23,new Date()));
  15. list.add(new User("李四",24,new Date()));
  16. list.add(new User("王五",25,new Date()));
  17. request.setAttribute("list",list);
  18. %>
  19. <table border="1" width="500" align="center">
  20. <tr>
  21. <th>编号</th>
  22. <th>姓名</th>
  23. <th>年龄</th>
  24. <th>生日</th>
  25. </tr>
  26. <%--数据行--%>
  27. <c:forEach items="${list}" var="user" varStatus="s">
  28. <c:if test="${s.count % 2 != 0}">
  29. <tr bgcolor="red">
  30. <td>${s.count}</td>
  31. <td>${user.name}</td>
  32. <td>${user.age}</td>
  33. <td>${user.birStr}</td>
  34. </tr>
  35. </c:if>
  36. <c:if test="${s.count % 2 == 0}">
  37. <tr bgcolor="green">
  38. <td>${s.count}</td>
  39. <td>${user.name}</td>
  40. <td>${user.age}</td>
  41. <td>${user.birStr}</td>
  42. </tr>
  43. </c:if>
  44. </c:forEach>
  45. </table>
  46. </body>
  47. </html>

效果图:
image.png