我觉得我错过了一些东西 – 从看起来似乎,JSP开箱即用,支持标签,正如 this question’s answer所示(那家伙正在问一个纯粹的jsp问题并得到一个涉及标签的答案). 但是,如果我尝试运行给定的
但是,如果我尝试运行给定的代码
<c:out value="${myString}"/>
(当然,之前定义了myString),jsp只是将上面的行写入html.
我是否必须做一些额外的事情来启用它?
JSTL支持取决于所使用的appserver / servletcontainer.有些船用JSTL,有些则没用.这与JSP / Servlet版本无关.例如,Sun Glassfish(作为一个完整的Java EE实现)随附JSTL,例如Apache Tomcat(作为一个简单的JSP / Servlet实现)没有.对于他们,您需要自己安装JSTL.它实际上非常简单(假设您使用的是Servlet 2.5或更新版本):
>下载jstl-1.2.jar.
>将其复制/复制到webapp的/ WEB-INF / lib文件夹(这是webapp的默认类路径的一部分).
>根据this JSTL documentation在JSP顶部声明标记(单击任何标记库以查看声明示例).对于JSTL core,它是以下内容:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
就这样.如果你(仍然)在Servlet 2.4上,那么你需要下载jstl.jar
and standard.jar
(它是JSTL 1.1的一部分).这些步骤的残余是相同的(只是放在类路径中并在JSP的顶部声明).
您可能会注意到一些糟糕的在线教程会建议提取JAR文件并使用TLD声明来混淆webapp的web.xml.你永远不应该这样做,这是一个错误的建议,这是由JSTL 1.0期间taglib URI的变化引起的 – > JSTL 1.1步骤.不是在JSP中更新taglib URI,而是决定在web.xml中重新定义旧的taglib URI,这成了一个神话.
JSP本身只附带< jsp:xxx>开箱即用的标签.你可以在this document找到它们(这确实很旧,但是在当前的JSP 2.2中没有改变).