安裝
JSTL 是 Java EE API 的一部分,包含在 Java EE 應用程式伺服器(如 WildFly , TomEE , GlassFish)中 ,但不包含在 Tomcat和 Jetty等準系統 servlet 容器中 。JSTL 是從 http://java.sun.com/jsp/jstl/*
名稱空間匯入的 taglib。不能將 JSTL 與“ 自定義 JSP 標記庫 ”(其中你自己定義 .tld
檔案 ) 混淆。JSTL 也不能與第三方框架的 taglib 混淆,例如 JSF,Spring MVC,Struts,Displaytag 等。JSTL 也不能與表達語言(EL)混淆 (這是那些東西)。
-
只有當你的 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
依賴,但它是空的。 -
使用正確的 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
為一些貧困的線上教程建議。