jstljstl入門


備註

JSTL (JSP標準標記庫)是一個基於JSP的標準標記庫,它提供<c:xxx>標記來控制 JSP頁面中的流<fmt:xxx>標記用於日期/數字格式化和國際化設施以及幾個${fn:xxx()} 實用程序EL函數

請注意,JSTL還提供SQLXML標記庫,這些標記庫允許以聲明方式執行SQL查詢並在JSP頁面內解析XML。然而,除了快速原型設計之外,其他目的不鼓勵這樣做。在現實世界中,兩個任務都需要由Servlet直接控制/委派的真實Java類完成。

安裝

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-INF/lib 應用程序。至少不要解壓JAR文件(S)和雜亂的類路徑及其內容(鬆散的TLD文件)和/或在你的 webapp的聲明標記庫web.xml 為一些貧困在線教程建議。