JSP 核心標籤庫

1.        一般標籤

在JSTL中,一般標籤主要用在輸出、設置變量值和錯誤處理等,這些是JSTL中使用最多的標籤

1).      <c:out value=”” escapeXml=”true|false” default=”defValue”> 計算一個表達式的值,然後把計算的結果輸出到當前的JspWriter對象。調用的結果和Servlet中out.println()語句效果一樣,其中value是將要輸出的表達式;escapeXml表示將<、> 、&、 ‘、 “等特殊的符號轉換成實體代碼;default表示如果value的值爲空,那麼將輸出這裏的默認值。注意<c:out>可以有Body,這裏的Body可以是HTML或者是JSP。例如:<c:out value=”${user.name}”>,(如果要使用表達式,那麼這裏的JSTL的版本必須是1.1以上)
 
2).      <c:set var=”” value=”” scope=”” target=”” property=””> 這個標籤用於在某個範圍中使用某個名字設定特定的值,或者設置某個已經存在的JavaBean對象的屬性,這其實就相當於<% request.setAttribute(“name”, “value”); %>。其中var表示這個屬性的名字,它相當於在標籤中定義了一個變量,並且這個變量只能在標籤中使用;value表示將要計算的表達式;scope表示屬性的有效範圍;target表示將要設置屬性的對象,它必須是JavaBeans或java.util.Map對象;property表示待設置的Target對象中的屬性名字,比如在JavaBean中有個name屬性,提供了setUserId方法,那麼這裏的property就是userId。例如:a. <c:set var=”flag” value=”yes” scope=”request”/> b. <c:set var=”price” scope=”session”>body content</c:set> c. <c:set value=”liky” target=”user” property=”name”/> d. <c:set target=”user” property=”pwd” >body content</c:set>
 
3).      <c:remove var=”flag” scope=”page”> 這個標籤用於刪除某個變量或者屬性。其中scope表示這個參數所在的範圍,如果不指定範圍,那麼將從page,request,session,application中依次搜索這個參數,如果還是沒有則不做任何動作;var表示待刪除的參數的名字,這個名字可以使在<c:set/>定義,也可以是在someScope.setAttribute(“varName”, “varValue”)中定義,相當於pageContext.removeAttribute(varName, scope);
 
4).      <c:catch var=””> 這個標籤用於捕獲由嵌套在它裏面的標籤拋出的異常對象(java.lang.Throwable),相當於<% try {} catch () {} %>。其中var表示標識這個異常的名字,它是一個標籤變量。例如:<c:catch var=”error”> <% Integer.parse(“abcd”)%> </c:catch>
 
 
2.        條件標籤
 
在JSTL中,條件標籤能完成條件判斷和多個條件選擇等功能。
1).      <c:if test=”” var=”” scope=””> 用於進行條件判斷,如果它的test屬性true,那麼就計算它的body。其中test表達式的條件,相當於if(test) 中的條件;var表示這個語句的名字;scope表示變量的作用範圍。這個標籤相當於<% if (test) {body} %>;例如:<c:if test=”8>5” var=”tif” scope=”page”>body</c:if>
2).      <c:choose>body</c:choose> 這個標籤用於條件選擇,它和<c:when>以及<c:otherwise>一起使用。它的條件選擇是排斥的,相當於:<% swith i {case 0: break; case 1: break;},也可以完成<% if() else if {} else {} %>這樣的多重條件判斷語句的功能。注意這裏body只能由0個或多個<c:when>子標籤,<c:otherwise>標籤之前出現;0個或者多個<c:otherwise>子標籤。
3).      <c:otherwise > 這個標籤表示<c:choose>的最後選擇。相當於<% swith () {case: break; default: …}中default語句;或者是<% if() else if {} else {} %>這樣的語句中的最後的else語句。例如:<c:choose><c:when test=”${count > 10}”><c:set var=”num” value=”10”/></c:when><c:otherwise><c:set var=”num” value=”20”></c:otherwise></c:choose>
 
 
3.        迭代標籤
 
在JSTL中,迭代標籤支持循環提取一個集合中的數據。
1).      <c:forEach var=”” items=”” varStatus=”” begin=”” end=”” step=””></c:forEach> 這個標籤是我們經常用的用於迭代一個集合的標籤,功能十分強大。其中var表示迭代的參數名字,它是標籤參數,在其他標籤中通過它來引用這個標籤中的內容;items表示要迭代的集合,注意這裏的集合是指Collection、Arrays、Iterator、Map、String、和Enumeration等這樣的表示集合的類;varStatus表示迭代的狀態,可以訪問迭代自身的信息;begin表示如果指定了items,那麼就從items的index[begin]開始迭代,並且items的第一個元素的索引是0;如果沒有指定items,那麼就從指定的index開始迭代;end表示如果指定了items,那麼就在items的index[end]結束迭代;如果沒有指定items,那麼就在指定的index結束迭代;step表示迭代的步長值,默認爲1。相當於<% for(int i=0; i<length; i++) {body} %>語句中的for循環的功能,只是這裏更容易使用。例如:<c:forEach var=”user” items=”${users}” > <c:out value=”${user.name}”/><br><c:out value=”${user.pwd}”/><br></c:forEach>
2).      <c:forTokens var=”” items=”” varStatus=”” delims=”” begin=”” end=”” step=””></c:forTokens> 這個標籤專門用於處理TokenString的迭代,可以在delims中指定一個或多個分隔符(delimiters),其他和<c:forEach>是相似的。例如:<c:set var=”countries” value=”中國;美國;加拿大;英國;日本”<c:forTokens var=”nation” delims=”;” items=”${countries}”><c:out value=”${nation}”/><br></c:forTokens>
 
 
4.        URL標籤
 
URL標籤是指頁面導航、頁面重定向、資源獲得及參數傳遞等方面的標籤。
1).      <c:import url=”” context=”” var=”” scope=”” charEncoding=”” varReader=””> 這個標籤可以導入一個資源相當於<jsp:include page=””/>。當然也可以將參數傳遞過去。
    <c:import url="login.jsp">
                  <c:param name="name">liky</c:param>
          <c:param name="pass">redhat</c:param>
</c:import>
其中url待導入資源的url,可以是相對路徑或者是絕對路徑,並且可以導入其他主機上的資源;context表示當使用相對路徑訪問外部context資源時,context指定了這個資源的名字;var爲參數的名字;scope爲var參數的作用範圍;charEncoding輸入資源的字符編碼;varReader這個參數的類型爲Reader,用於讀取資源
<c:import url="source.txt" charEncoding="ISO8859-1" varReader="reader">
       <c:out value="${reader}"/>
</c:import>
 
2).      <c:redirect url=”” context=””> 這個標籤是用於重定向到另外一個資源。其中url表示待定向資源的URL,相對路徑或者絕對路徑;context當使用相對路徑訪問外部context資源時,context制定了這個資源的名字。相當於<% request.sendRedirect(“next.jsp”);%>或者是Servlet中的RequestDispatcher.forward()語句的功能。例如:
<c:redirect url="login.jsp">
       <c:param name="name">liky</c:param>
       <c:param name="pass" value=”redhat”/>
</c:redirect>
 
3).      <c:url value=”” context=”” var=”” scope=””> 這個標籤用於構造URL,主要是重寫URL地址。其中value表示URL的值;context表示當使用相對路徑訪問外部context資源時,context指定了這個資源的名字;var表示標識這個URL的變量;scope表示這個變量作用範圍。例如:<c:url var=”footer” value=”footer.jsp” scope=”page”>
 
4).      <c:param name=”” value=””> 這個標籤用於在<c:import>、<c:url>、<c:redirect>中添加請求的參數。它和一般的參數標籤沒有什麼區別。其中name表示參數的名字;value參數的值。要注意的是參數的值既可以用value指出,也可以在標籤體中指出。例如:同上。
 
 
5.  一般標籤示例
 
<%@ page contentType="text/html;charset=GBK"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<jsp:useBean id="user" class="com.bean.UserBean" scope="page" />
<jsp:setProperty name="user" property="name" value="猛牛" />
<jsp:setProperty name="user" property="pwd" value="拴拴你" />
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>測試標準標籤庫</title>
</head>
<body>
user.name:<c:out value="${user.name}" escapeXml="true" default="liky" /><br>
user.pwd:<c:out value="${user.pwd}" /><br>
 
<c:set target="${user}" property="name" value="擺渡" />
<c:out value="${user.name}" escapeXml="true" default="liky" /><br>
 
<c:set var="flag" scope="page" value="${user.pwd}"/>
flag: <c:out value="${flag}"/><br>
 
<c:remove var="flag" scope="page"/>
flag: <c:out value="${flag}"/><br>
 
<c:catch var="error">
<%
 Integer.parseInt("abc");
%>
</c:catch>
<c:out value="${error}"/>
 
</body>
</html>
 
 
6.     條件標籤示例
 
<%@ page contentType="text/html; charset=GBK"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>測試條件標籤</title>
</head>
<c:set var="num" value="40" scope="page" />
<c:set var="bgcolor" value="#000000" scope="page" />
<c:if test="${num<50}" var="testCause" scope="page">
 <c:out value="${testCause}" />
</c:if>
<c:choose>
 <c:when test="${num==10}">
      <c:set var="bgcolor" value="red" />
 </c:when>
 <c:when test="${num==40}">
      <c:set var="bgcolor" value="blue" />
 </c:when>
 <c:otherwise>
      <c:set var="bgcolor" value="purple" />
 </c:otherwise>
</c:choose>
 
<body bgColor="${bgcolor }">
</body>
</html>
 
 
7.      迭代標籤
 
<%@ page contentType="text/html;charset=GBK"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ page import="com.bean.*,java.util.*"%>
<%
 int[] arr = new int[10];
 for (int i = 0; i < 10; i++) {
      arr[i] = i;
 }
 pageContext.setAttribute("arr", arr);
 
           List list = new ArrayList();
 for (int i = 0; i < 10; i++) {
       UserBean user = new UserBean();
       user.setName("Guest" + i);
       user.setPwd("00" + i);
       list.add(user);
 }
 pageContext.setAttribute("list", list, pageContext.PAGE_SCOPE);
%>
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>測試迭代標籤</title>
</head>
 
<body>
<c:out value="開始迭代數組:" />
<br>
<c:forEach var="ar" items="${arr}">
 <c:out value="${ar}" />
 <br>
</c:forEach>
 
<c:out value="開始迭代列表:" />
<br>
<c:forEach var="lst" items="${list}">
 <c:out value="${lst.name}" />
 <c:out value="${lst.pwd}" />
 <br>
</c:forEach>
<br>
</body>
</html>
 
 /*=============== 測試迭代Map===============*/
 
<%@ page contentType="text/html; charset=GBK" import="java.util.Map"%>
<%@ page import="java.util.HashMap"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
 
<%
 Map map = new HashMap();
 map.put("百度", "http://www.bai.com");
 map.put("雅虎", "http://www.yahoo.com.cn");
 map.put("谷歌", "http://www.google.com");
 out.println(map.get("谷歌"));
 request.setAttribute("map", map);
%>
 <html>
           <head>
                   <title>使用forEach標籤迭代Map</title>
           </head>
<body>
<table  border="1">
<CAPTION><c:out value="輸出Map中所有的值:" /></CAPTION>
<c:forEach items="${map}" var="mymap">
  <tr>
   <td><c:out value="${mymap.key}" /></td>
   <td><c:out value="${mymap.value}" /></td>
 </tr>
</c:forEach>
</table>
 
<table border="1">
<CAPTION><c:out value="輸出Map中特定的值:" /></CAPTION>
<c:forEach items="${map}" var="mymap">
  <tr>
   <c:if test="${mymap.key=='谷歌}">
    <td><c:out value="${mymap.key}" /></td>
    <td><c:out value="${mymap.value}" /></td>
    <br>
   </c:if>
  </tr>
</c:forEach>
</table>
</body>
</html>
 
 
8.    URL標籤示例
/*===========這裏測試import標籤============*/
<%@ page contentType="text/html;charset=GBK"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>測試import標籤</title>
</head>
 
<body>
<!-- 這裏是導入一個資源,並且將參數傳遞過去 -->
<c:import url="login.jsp">
 <c:param name="name">liky</c:param>
 <c:param name="pass">redhat</c:param>
</c:import>
 
<!-- 這裏是導入一個資源,並且並且讀取這個資源 -->
<c:import url="source.txt" charEncoding="ISO8859-1" varReader="reader">
    <c:out value="${reader}"/>
</c:import>
</body>
</html>
 
/*============這裏測試redirect標籤============*/
<%@ page contentType="text/html;charset=GBK"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>測試重定向標籤</title>
</head>
 
<body>
<c:redirect url="login.jsp">
 <c:param name="name">liky</c:param>
 <c:param name="pass" value="redhat" />
</c:redirect>
</body>
</html>
/*==============這裏測試url標籤  ===============*/
<%@ page contentType="text/html;charset=GBK"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>測試URL標籤</title>
</head>
<body>
<c:url value="login.jsp" var="reg" scope="page">
 <c:param name="name" value="liky" />
 <c:param name="pass" value="wahaha" />
</c:url>
<c:redirect url="${reg}" />
</body>
</html>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章