我感觉好像缺少了一些东西-从表面上看,JSP开箱即用,支持标签,正如该问题的答案所示(那个人在问一个纯jsp问题,并得到一个涉及标签的答案)。但是如果我尝试运行给定的代码
<c:out value="${myString}"/>
(myString当然,之前已定义),jsp只是将上述行写入html。
myString
我需要做一些额外的事情来启用它吗?
JSTL支持取决于所使用的服务器/ servlet容器。有些附带JSTL,有些则没有。这与JSP / Servlet版本无关。通常,普通的JEE服务器(如WildFly / Payara / TomEE)已经随包装提供了JSTL,但准系统的servlet容器(如Tomcat / Jetty / Undertow)却没有。对于他们,您需要自己安装JSTL。
实际上非常简单(假设您使用的是Servlet 2.5或更高版本):
下载jstl-1.2.jar并将其复制/复制到webapp的/WEB-INF/lib文件夹中(该文件夹是webapp的默认类路径的一部分)。使用Maven时,请使用以下坐标:
/WEB-INF/lib
<dependency> <groupId>jstl</groupId> <artifactId>jstl</artifactId> <version>1.2</version>
根据此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顶部声明)。
jstl.jar
standard.jar
您可能会注意到,一些差劲的在线教程会建议提取JAR文件,并web.xml用TLD声明使Web应用程序混乱。您永远不要这样做,这是一个错误的建议,这是由JSTL1.0-> JSTL 1.1步骤期间taglib URI的更改引起的。而不是在JSP中更新taglib URI,而是决定重新定义旧的taglib URIweb.xml,这变成了一个神话。
web.xml
JSP本身仅附带<jsp:xxx>标签。这些 不是 JSTL的一部分。
<jsp:xxx>