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

时间:2010-03-08 08:26:35

标签: jsp jstl

我觉得我错过了一些东西 - 从看起来似乎是JSP开箱即用支持标签,正如this question's answer所示(那家伙正在问一个纯粹的jsp问题并得到一个涉及标签的答案)。 但是,如果我尝试运行给定的代码

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

(前面定义了myString),jsp只是将上面的行写入html。

我是否必须做一些额外的事情来启用它?

3 个答案:

答案 0 :(得分:8)

JSTL支持取决于所使用的appserver / servletcontainer。有些船用JSTL,有些则没用。这与JSP / Servlet版本无关。例如,Sun Glassfish(作为完整的 Java EE实现)随附JSTL,例如Apache Tomcat(作为简单的 JSP / Servlet实现)没有。对他们来说,你需要自己安装JSTL。

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

  1. 下载jstl-1.2.jar
  2. 将其复制/复制到webapp的/WEB-INF/lib文件夹(这是webapp默认类路径的一部分)。
  3. 根据this JSTL documentation在JSP顶部声明标记(单击任何标记库以查看声明示例)。对于JSTL core,它是以下内容:

    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    
  4. 这就是全部。如果你(仍然)在Servlet 2.4上,那么你需要下载jstl.jar and standard.jar(它是JSTL 1.1的一部分)。这些步骤的残余是相同的(只是放在类路径中并在JSP的顶部声明)。

    您可能会注意到,一些糟糕的在线教程会建议提取JAR文件,并使用TLD声明来混淆webapp的web.xml。你永远不应该这样做,这是一个错误的建议,它是由JSTL 1.0期间taglib URI的变化引起的 - &gt; JSTL 1.1步骤。不是在JSP中更新taglib URI,而是决定在web.xml中重新定义旧的taglib URI,它就变成了一个神话。

    JSP本身只附带<jsp:xxx>个标签。您可以在this document中找到它们(这确实很旧,但在当前的JSP 2.2中没有改变)。

答案 1 :(得分:1)

您需要在JSP的顶部声明taglib:

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

答案 2 :(得分:-1)

  1. 在 POM XML 文件中添加 JSTL 依赖文件(如果使用 Maven 项目)否则添加 JSTL jar 文件进入项目

  2. 在要使用 JSTL 标记的 JSP 中添加以下行 - <%@ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core" %>

  3. 在您的代码中,您使用了 JSTL 标记和表达式语言,其编写为 ${myString}。要支持表达式语言,您必须在 Page 指令中使用 isELIgnored="false" 属性

    <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1" isELIgnored="false" %>