一尘不染

在JSP中启用JavaServerPages标准标记库(JSTL)

jsp

我感觉好像缺少了一些东西-从表面上看,JSP开箱即用,支持标签,正如该问题的答案所示(那个人在问一个纯jsp问题,并得到一个涉及标签的答案)。但是如果我尝试运行给定的代码

<c:out value="${myString}"/>

myString当然,之前已定义),jsp只是将上述行写入html。

我需要做一些额外的事情来启用它吗?


阅读 304

收藏
2020-06-08

共1个答案

一尘不染

JSTL支持取决于所使用的服务器/ servlet容器。有些附带JSTL,有些则没有。这与JSP /
Servlet版本无关。通常,普通的JEE服务器(如WildFly / Payara /
TomEE)已经随包装提供了JSTL,但准系统的servlet容器(如Tomcat / Jetty /
Undertow)却没有。对于他们,您需要自己安装JSTL。

实际上非常简单(假设您使用的是Servlet 2.5或更高版本):

  1. 下载jstl-1.2.jar并将其复制/复制到webapp的/WEB-INF/lib文件夹中(该文件夹是webapp的默认类路径的一部分)。使用Maven时,请使用以下坐标:

    <dependency>
    <groupId>jstl</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
    

  2. 根据此JSTL文档,在JSP顶部声明标签(单击任何标签库以查看声明示例)。对于JSTL核心,如下所示:

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

就这样。如果您仍在使用Servlet 2.4,则需要下载jstl.jar
standard.jar
不是(它们是JSTL1.1的一部分)。其余步骤相同(只是放在classpath中,并在JSP顶部声明)。

您可能会注意到,一些差劲的在线教程会建议提取JAR文件,并web.xml用TLD声明使Web应用程序混乱。您永远不要这样做,这是一个错误的建议,这是由JSTL1.0-> JSTL 1.1步骤期间taglib URI的更改引起的。而不是在JSP中更新taglib URI,而是决定重新定义旧的taglib URIweb.xml,这变成了一个神话。

JSP本身仅附带<jsp:xxx>标签。这些 不是 JSTL的一部分。

2020-06-08