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

ola*_*ndo 5 jsp jstl

我觉得我错过了一些东西 - 从看起来似乎,JSP开箱即用,支持标签,因为这个问题的答案显示(那家伙问的是一个纯粹的jsp问题,得到了一个涉及标签的答案).但是,如果我尝试运行给定的代码

<c:out value="${myString}"/>
Run Code Online (Sandbox Code Playgroud)

(myString当然,在定义之前),jsp只是将上面的行写入html.

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

Bal*_*usC 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. 根据此JSTL文档在JSP顶部声明标记(单击任何标记库以查看声明示例).对于JSTL核心,它是以下内容:

    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    
    Run Code Online (Sandbox Code Playgroud)

就这样.如果你(仍然)在Servlet 2.4上,那么你需要下载jstl.jar standard.jar不是(它是JSTL 1.1的一部分).这些步骤的残余是相同的(只是放在类路径中并在JSP的顶部声明).

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

JSP本身只附带<jsp:xxx>开箱即用的标签.您可以在本文档中找到它们(这确实非常古老,但在当前的JSP 2.2中没有改变).