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