Web階段:第十四章:JSTL標(biāo)簽庫

JSTL 標(biāo)簽庫
JSTL標(biāo)簽庫 全稱是指 JSP Standard Tag Library JSP標(biāo)準(zhǔn)標(biāo)簽庫。是一個不斷完善的開放源代碼的JSP標(biāo)簽庫。
EL表達(dá)式主要是為了替換jsp中的表達(dá)式腳本,而標(biāo)簽庫則是為了替換代碼腳本。這樣使得整個jsp頁面變得更佳簡潔。

JSTL由五個不同功能的標(biāo)簽庫組成。
功能范圍 URI 前綴

核心標(biāo)簽庫--重點(diǎn)    http://java.sun.com/jsp/jstl/core    c
格式化    http://java.sun.com/jsp/jstl/fmt        fmt
函數(shù)    http://java.sun.com/jsp/jstl/functions        fn
數(shù)據(jù)庫(不使用)    http://java.sun.com/jsp/jstl/sql    sql
XML(不使用)    http://java.sun.com/jsp/jstl/xml    x

在jsp標(biāo)簽庫中使用taglib指令引入標(biāo)簽庫
CORE 標(biāo)簽庫
<%@ taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core” %>
XML 標(biāo)簽庫
<%@ taglib prefix=“x” uri=“http://java.sun.com/jsp/jstl/xml” %>
FMT 標(biāo)簽庫
<%@ taglib prefix=“fmt” uri=“http://java.sun.com/jsp/jstl/fmt” %>
SQL 標(biāo)簽庫
<%@ taglib prefix=“sql” uri=“http://java.sun.com/jsp/jstl/sql” %>
FUNCTIONS 標(biāo)簽庫
<%@ taglib prefix=“fn” uri=“http://java.sun.com/jsp/jstl/functions” %>

JSTL標(biāo)簽庫的使用步驟
1、導(dǎo)入jstl標(biāo)簽庫的jar包
taglibs-standard-impl-1.2.1.jar
taglibs-standard-spec-1.2.1.jar

2、使用taglib指令引入你需要的標(biāo)簽庫
<%@ taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c”%>

core核心庫使用
<c:set />
1、可以往域中保存數(shù)據(jù)
2、可以修改域中bean對象的屬性或Map集合的某個key的值

  1. <body>
  2. <%-- i.<c:set /> --%>
  3. <%--
  4. 域?qū)ο?setAttriubte(key,value);
  5. scope 屬性設(shè)置使用哪個域?qū)ο? page,request,session,application
  6. var 就是保存的key
  7. value 屬性設(shè)置你要保存的值
  8. --%>
  9. <!-- 1、可以往域中保存數(shù)據(jù) -->
  10. 保存之前:${ requestScope.key1 }<br/>
  11. <c:set scope="request" var="key1" value="value1"></c:set>
  12. 保存之后:${ requestScope.key1 }<br/>
  13. <hr/>
  14. <%
  15. Map<String,Object> map = new HashMap<String,Object>();
  16. map.put("aa", "修改之前");
  17. map.put("bb", "bbValue");
  18. request.setAttribute("map", map);
  19. %>
  20. <%-- 2、可以修改域中bean對象的屬性或Map集合的某個key的值
  21. bean對象.setXxxx(新值); Xxx是你要修改的屬性
  22. map對象.put(key,新值);
  23. target屬性表示你要修改哪個bean對象,或是哪個map集合
  24. property屬性設(shè)置你要修改的是哪個屬性,或是map集合的哪個key
  25. value 屬性設(shè)置你的新值
  26. --%>
  27. 修改之前:${ requestScope.map }<br/>
  28. <c:set target="${ requestScope.map }" property="aa" value="修改之后"></c:set>
  29. 修改之后:${ requestScope.map }<br/>
  30. </body>

<c:if />
if標(biāo)簽可以用來做判斷使用。

   

  1. <%-- if標(biāo)簽做if判斷,
  2. test 屬性是if判斷的表達(dá)式(使用EL表達(dá)式輸出真假值)
  3. --%>
  4. <c:if test="${ 12 == 12 }">
  5. <h1>12等于12啦啦啦……</h1>
  6. </c:if>

<c:choose> <c:when> <c:otherwise>標(biāo)簽
跟switch 、case、default,基本一樣。

  1. <%
  2. request.setAttribute("height", 136);
  3. %>
  4. <%--
  5. choosewhen。otherwise需要注意兩個點(diǎn):
  6. 1、在這里標(biāo)簽內(nèi)不能使用html注釋
  7. 2、when標(biāo)簽的父標(biāo)簽一定要是choose標(biāo)簽
  8. --%>
  9. <c:choose><%-- switch --%>
  10. <%-- when 表示一種條件情況,相當(dāng)于case --%>
  11. <c:when test="${ requestScope.height >= 190 }">
  12. <h1>老高老高啦啦啦……</h1>
  13. </c:when>
  14. <c:when test="${ requestScope.height >= 180 }">
  15. <h1>很高很高啦啦啦……</h1>
  16. </c:when>
  17. <c:when test="${ requestScope.height >= 170 }">
  18. <h1>好矮好矮啦啦啦……</h1>
  19. </c:when>
  20. <c:when test="${ requestScope.height >= 160 }">
  21. <h1>二等那啥啦啦啦……</h1>
  22. </c:when>
  23. <c:otherwise><%-- default --%>
  24. <c:choose>
  25. <c:when test="${ requestScope.height >= 150 }">
  26. <h1>150</h1>
  27. </c:when>
  28. <c:when test="${ requestScope.height >= 140 }">
  29. <h1>140</h1>
  30. </c:when>
  31. <c:when test="${ requestScope.height >= 130 }">
  32. <h1>130</h1>
  33. </c:when>
  34. </c:choose>
  35. </c:otherwise>
  36. </c:choose>

<c:url />
1、它可以生成一個url地址,直接輸出
2、可以把生成的url地址保存到某個域中

  1. <!-- 1、它可以生成一個url地址,直接輸出
  2. value 是你的訪問的資源路徑
  3. context 是你所在的工程路徑,默認(rèn)是當(dāng)前工程
  4. -->
  5. <c:url value="/f.jsp" context="/abc">
  6. <c:param name="username" value="wzg168"></c:param>
  7. <c:param name="password" value="123456"></c:param>
  8. </c:url>
  9. <br/>
  10. <!-- 2、可以把生成的url地址保存到某個域中
  11. 域?qū)ο?setAttribute(key,地址);
  12. session.setAttribute(url,地址);
  13. -->
  14. <c:url value="/f.jsp" context="/abc" scope="session" var="url">
  15. <c:param name="username" value="wzg168"></c:param>
  16. <c:param name="password" value="123456"></c:param>
  17. </c:url>
  18. Session域中保存的地址是:${ sessionScope.url }

<c:forEach />
forEach標(biāo)簽做遍歷操作

1.遍歷1到10,輸出
2.遍歷Object數(shù)組
3.遍歷List集合—list中存放 Person類,有屬性:編號,用戶名,密碼,年齡,電話信息
4.遍歷Map集合

測試代碼:

  1. <%@page import="java.util.HashMap"%>
  2. <%@page import="java.util.Map"%>
  3. <%@page import="com.atguigu.pojo.Student"%>
  4. <%@page import="java.util.ArrayList"%>
  5. <%@page import="java.util.List"%>
  6. <%@ page language="java" contentType="text/html; charset=UTF-8"
  7. pageEncoding="UTF-8"%>
  8. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
  9. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  10. <html>
  11. <head>
  12. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  13. <title>Insert title here</title>
  14. <style type="text/css">
  15. table{
  16. width: 500px;
  17. border: 1px solid red;
  18. border-collapse: collapse;
  19. }
  20. th , td{
  21. border: 1px solid red;
  22. }
  23. </style>
  24. </head>
  25. <body>
  26. <!-- 1.遍歷1到10,輸出
  27. begin 遍歷開始的索引
  28. end 遍歷結(jié)束的索引
  29. var 是當(dāng)前正在遍歷到的數(shù)據(jù)
  30. -->
  31. <c:forEach begin="1" end="10" var="i">
  32. ${ i }
  33. </c:forEach>
  34. <hr/>
  35. <!-- 2.遍歷Object數(shù)組 -->
  36. <%
  37. request.setAttribute("arr", new String[]{"aaaa","bbbb","cccc"});
  38. %>
  39. <!--
  40. items 設(shè)置你要遍歷的集合(數(shù)據(jù)源)
  41. var 是當(dāng)前正在遍歷到的數(shù)據(jù)
  42. -->
  43. <c:forEach items="${ requestScope.arr }" var="item">
  44. ${ item }<br/>
  45. </c:forEach>
  46. <hr/>
  47. <!-- 3.遍歷List集合---list中存放 Student類,有屬性:編號,用戶名,密碼,年齡,電話信息 -->
  48. <%
  49. List<Student> list = new ArrayList<Student>();
  50. for (int i = 0; i < 10; i++) {
  51. list.add(new Student(i,"name"+i,"pass"+i,18+i,"phone"+i));
  52. }
  53. request.setAttribute("list", list);
  54. %>
  55. <table>
  56. <tr>
  57. <th>編號</th>
  58. <th>用戶名</th>
  59. <th>密碼</th>
  60. <th>年齡</th>
  61. <th>電話</th>
  62. <th>操作</th>
  63. </tr>
  64. <!--
  65. step 是設(shè)置步長,每次遍歷完,索引怎么移動,默認(rèn)是1
  66. varStatus 是當(dāng)前遍歷到的數(shù)據(jù)的狀態(tài)對象
  67. -->
  68. <c:forEach begin="1" end="7" items="${ requestScope.list }" step="1" var="stu" varStatus="status">
  69. <c:if test="${ status.count == 3 }">
  70. <tr style="background-color: green;">
  71. </c:if>
  72. <c:if test="${ status.count != 3 }">
  73. <tr>
  74. </c:if>
  75. <td>${ stu.id }</td>
  76. <td>${ stu.username }</td>
  77. <td>${ stu.password }</td>
  78. <td>${ stu.age }</td>
  79. <td>${ stu.phone }</td>
  80. <td>${ status.step }</td>
  81. </tr>
  82. </c:forEach>
  83. </table>
  84. <hr/>
  85. <!-- 4.遍歷Map集合 -->
  86. <%
  87. Map<String,Object> map = new HashMap<String,Object>();
  88. map.put("key1", "value1");
  89. map.put("key2", "value2");
  90. map.put("key3", "value3");
  91. request.setAttribute("map", map);
  92. %>
  93. <c:forEach items="${ requestScope.map }" var="entry">
  94. ${ entry.value }<br/>
  95. </c:forEach>
  96. </body>
  97. </html>