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 为一些贫困在线教程建议。