安裝

JSTL 是 Java EE API 的一部分,包含在 Java EE 應用程式伺服器(如 WildFlyTomEEGlassFish)中 ,但不包含在 TomcatJetty等準系統 servlet 容器中 。JSTL 是從 http://java.sun.com/jsp/jstl/*名稱空間匯入的 taglib。不能將 JSTL 與“ 自定義 JSP 標記庫 ”(其中你自己定義 .tld 檔案 ) 混淆。JSTL 也不能與第三方框架的 taglib 混淆,例如 JSF,Spring MVC,Struts,Displaytag 等。JSTL 也不能與表達語言(EL)混淆 (這是那些東西)。

  1. 只有當你的 servletcontainer 沒有內建 JSTL(例如 Tomcat 和 Jetty)時,才將 jstl-1.2.jar 直接放在 webapp 的/WEB-INF/lib 資料夾中(預設的 webapp 的類路徑覆蓋,所以在有點聰明的 IDE 中你不要不需要做任何事情)。首先,請不要在 IDE 專案的 Build Path 設定中亂搞。這是錯的。

    如果你正在使用 Maven,是座標:

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>
    </dependency>
    

    這就是 JSTL API 與 Apache 的 JSTL 實現繫結在一起的 JAR 風格。這並沒有要求 standard.jar(它是 JSTL 1.1 只)。請注意,還有一個 jstl:jstl 依賴項,但它是完全相同的檔案,只有錯誤的組 ID。此外還有一個 javax.servlet.jsp.jstl:jstl 依賴,但它是空的。

  2. 使用正確的 TLD URI 在 JSP 檔案中宣告 taglib。你可以在此處找到適用於 JSTL 1.1 和 JSTL 1.2 的 TLD 文件。單擊感興趣的 taglib 以獲取宣告示例。例如 JSTL 核心 taglib

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

    如果你使用的是 Facelets 或 JSPX 而不是 JSP,則應將其宣告為 XML 名稱空間

    <anyxmlelement xmlns:c="http://java.sun.com/jsp/jstl/core">
    

你只需確保在類路徑中沒有重複的舊 JSTL 版本(包括 JDK / JRE 的/lib 和伺服器的/lib)以避免衝突。如果你對伺服器具有完全的管理員級別控制權,那麼你也可以將 JAR 檔案放在伺服器的/lib 而不是 webapp 的/WEB-INF/lib 中,以便它們應用於所有已部署的 Web 應用程式。至少不要解壓 JAR 檔案(S)和雜亂的類路徑及其內容(鬆散的 TLD 檔案)和/或宣告的標記庫 Web 應用程式的 web.xml 為一些貧困的線上教程建議。