JSP 標准標簽庫(JSTL)(菜鳥教程)


 

 

菜鳥教程

 

JSTL 1.1 與 JSTL 1.2 之間的區別?如何下載 JSTL 1.2?

JSTL 1.2 中不要求 standard.jar 包。

您可以在 Maven 中央倉庫中找到它們。

http://repo2.maven.org/maven2/javax/servlet/jstl/

http://repo2.maven.org/maven2/taglibs/standard/

由於JSTL 1.1已經過時,Apache已將其置於存檔中。選擇jakarta-taglibs-standard-current.zip文件。

但是,如果您正在運行Servlet 2.5兼容容器並且web.xml聲明為至少Servlet 2.5

那么您應該能夠使用新的JSTL 1.2

需要注意的是JSTL 1.2並沒有要求standard.jar

 

根據JSTL標簽所提供的功能,可以將其分為5個類別。

  • 核心標簽
  • 格式化標簽
  • SQL 標簽
  • XML 標簽
  • JSTL 函數

JSTL 庫安裝

從Apache的標准標簽庫中下載的二進包(jakarta-taglibs-standard-current.zip)。

 

下載 jakarta-taglibs-standard-1.1.2.zip 包並解壓,將 jakarta-taglibs-standard-1.1.2/lib/ 下的兩個 jar 文件:standard.jar 和 jstl.jar 

文件拷貝到 /WEB-INF/lib/ 下。

 

將 tld 下的需要引入的 tld 文件復制到 WEB-INF 目錄下。

接下來我們在 web.xml 文件中添加以下配置:

 

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" 
    xmlns="http://java.sun.com/xml/ns/j2ee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
        http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    <jsp-config>
    <taglib>
    <taglib-uri>http://java.sun.com/jsp/jstl/fmt</taglib-uri>
    <taglib-location>/WEB-INF/fmt.tld</taglib-location>
    </taglib>
    <taglib>
    <taglib-uri>http://java.sun.com/jsp/jstl/fmt-rt</taglib-uri>
    <taglib-location>/WEB-INF/fmt-rt.tld</taglib-location>
    </taglib>
    <taglib>
    <taglib-uri>http://java.sun.com/jsp/jstl/core</taglib-uri>
    <taglib-location>/WEB-INF/c.tld</taglib-location>
    </taglib>
    <taglib>
    <taglib-uri>http://java.sun.com/jsp/jstl/core-rt</taglib-uri>
    <taglib-location>/WEB-INF/c-rt.tld</taglib-location>
    </taglib>
    <taglib>
    <taglib-uri>http://java.sun.com/jsp/jstl/sql</taglib-uri>
    <taglib-location>/WEB-INF/sql.tld</taglib-location>
    </taglib>
    <taglib>
    <taglib-uri>http://java.sun.com/jsp/jstl/sql-rt</taglib-uri>
    <taglib-location>/WEB-INF/sql-rt.tld</taglib-location>
    </taglib>
    <taglib>
    <taglib-uri>http://java.sun.com/jsp/jstl/x</taglib-uri>
    <taglib-location>/WEB-INF/x.tld</taglib-location>
    </taglib>
    <taglib>
    <taglib-uri>http://java.sun.com/jsp/jstl/x-rt</taglib-uri>
    <taglib-location>/WEB-INF/x-rt.tld</taglib-location>
    </taglib>
    </jsp-config>
</web-app>

使用任何庫,你必須在每個 JSP 文件中的頭部包含 <taglib> 標簽。

核心標簽

核心標簽是最常用的 JSTL標簽。引用核心標簽庫的語法如下:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

 

<c:out> 標c:out

 

<c:out>標簽用來顯示一個表達式的結果,與<%= %>作用相似,

它們的區別就是<c:out>標簽可以直接通過"."操作符來訪問屬性。

如果想要訪問customer.address.street,只需要這樣寫:<c:out value="customer.address.street">。

 

語法格式

<c:out value="<string>" default="<string>" escapeXml="<true|false>"/>

 

 

 

<c:set> 標簽   c:set

<c:set>標簽用於設置變量值和對象屬性。

<c:set>標簽就是<jsp:setProperty>行為標簽的孿生兄弟。

這個標簽之所以很有用呢,是因為它會計算表達式的值然后使用計算結果來設置 JavaBean 對象或 java.util.Map 對象的值。

 

<c:set var="salary" scope="session" value="${2000*2}"/>
<c:out value="${salary}"/>

 

<c:remove> 標簽  c:remove

<c:remove>標簽用於移除一個變量,可以指定這個變量的作用域,若未指定,則默認為變量第一次出現的作用域。

這個標簽不是特別有用,不過可以用來確保JSP完成清理工作

<c:remove var="<string>" scope="<string>"/>

 

<c:set var="salary" scope="session" value="${2000*2}"/>
<p>salary 變量值: <c:out value="${salary}"/></p>
<c:remove var="salary"/>
<p>刪除 salary 變量后的值: <c:out value="${salary}"/></p>

<c:catch> 標簽  c:catch

 <c:catch> 標簽主要用來處理產生錯誤的異常狀況,並且將錯誤信息儲存起來。

 

<c:catch var ="catchException">
   <% int x = 5/0;%>
</c:catch>

<c:if test = "${catchException != null}">
   <p>異常為 : ${catchException} <br />
   發生了異常: ${catchException.message}</p>
</c:if>

<c:if> 標簽   c:if

 <c:if>標簽判斷表達式的值,如果表達式的值為 true 則執行其主體內容。

 

<c:set var="salary" scope="session" value="${2000*2}"/>
<c:if test="${salary > 2000}">
   <p>我的工資為: <c:out value="${salary}"/><p>
</c:if>

<c:choose>, <c:when>, <c:otherwise> 標簽   c:choose   c:when   c:otherwise

<c:choose>標簽與Java switch語句的功能一樣,用於在眾多選項中做出選擇。

switch語句中有case,而<c:choose>標簽中對應有<c:when>,

switch語句中有default,而<c:choose>標簽中有<c:otherwise>。

 

<c:set var="salary" scope="session" value="${2000*2}"/>
<p>你的工資為 : <c:out value="${salary}"/></p>
<c:choose>
    <c:when test="${salary <= 0}">
       太慘了。
    </c:when>
    <c:when test="${salary > 1000}">
       不錯的薪水,還能生活。
    </c:when>
    <c:otherwise>
        什么都沒有。
    </c:otherwise>
</c:choose>

<c:import> 標簽    c:import

<c:import>標簽提供了所有<jsp:include>行為標簽所具有的功能,同時也允許包含絕對URL。

舉例來說,使用<c:import>標簽可以包含一個FTP服務器中不同的網頁內容。

 

<c:import var="data" url="http://www.runoob.com"/>
<c:out value="${data}"/>

以上程序將會打印http://www.runoob.com"頁面的源代碼

 

<c:forEach>, <c:forTokens> 標簽   c:forEach   c:forTokens

這些標簽封裝了Java中的for,while,do-while循環。

相比而言,<c:forEach>標簽是更加通用的標簽,因為它迭代一個集合中的對象。

<c:forTokens>標簽通過指定分隔符字符串分隔為一個數組然后迭代它們。

 

<c:forEach>標簽有如下屬性:

 

屬性 描述 是否必要 默認值
items 要被循環的信息
begin 開始的元素(0=第一個元素1=第二個元素 0
end 最后一個元素(0=第一個元素,1=第二個元素) Last element
step 每一次迭代的步長 1
var 代表當前條目的變量名稱
varStatus 代表循環狀態的變量名稱

 <c:forTokens>標簽與<c:forEach>標簽有相似的屬性,

不過<c:forTokens>還有另一個屬性:

 

delims 分隔符

 

<c:forEach var="i" begin="1" end="5">
   Item <c:out value="${i}"/><p>
</c:forEach>

<c:forTokens>演示實例

<c:forTokens items="google,runoob,taobao" delims="," var="name">
   <c:out value="${name}"/><p>
</c:forTokens>

<c:param> 標簽   c:param

<c:param>標簽用於在<c:url>標簽中指定參數,而且與URL編碼相關。

在<c:param>標簽內,name屬性表明參數的名稱,value屬性表明參數的值。

 

 <h1>&lt;c:param&gt; 實例</h1>
    <c:url var="myURL" value="main.jsp">
        <c:param name="name" value="Runoob"/>
        <c:param name="url" value="www.runoob.com"/>
    </c:url>
      <a href="/<c:out value="${myURL}"/>">
 使用 &lt;c:param&gt; 為指定URL發送兩個參數。</a>

<c:redirect> 標簽    c:redirect

 <c:redirect>標簽通過自動重寫URL來將瀏覽器重定向至一個新的URL,它提供內容相關的URL,並且支持c:param標簽。

<c:redirect url="http://www.runoob.com"/>

<c:url> 標簽   c:url

<c:url>標簽將URL格式化為一個字符串,然后存儲在一個變量中。

這個標簽在需要的時候會自動重寫URL。

var屬性用於存儲格式化后的URL。

<c:url>標簽只是用於調用response.encodeURL()方法的一種可選的方法。它真正的優勢在於提供了合適的URL編碼,包括<c:param>中指定的參數。

 

<h1>&lt;c:url&gt實例 Demo</h1>
    <a href="<c:url value="http://www.runoob.com"/>">
     這個鏈接通過 &lt;c:url&gt; 標簽生成。
    </a>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM