我觉得我错过了一些东西 - 从看起来似乎是JSP开箱即用支持标签,正如this question's answer所示(那家伙正在问一个纯粹的jsp问题并得到一个涉及标签的答案)。 但是,如果我尝试运行给定的代码
<c:out value="${myString}"/>
(前面定义了myString
),jsp只是将上面的行写入html。
我是否必须做一些额外的事情来启用它?
答案 0 :(得分:8)
JSTL支持取决于所使用的appserver / servletcontainer。有些船用JSTL,有些则没用。这与JSP / Servlet版本无关。例如,Sun Glassfish(作为完整的 Java EE实现)随附JSTL,例如Apache Tomcat(作为简单的 JSP / Servlet实现)没有。对他们来说,你需要自己安装JSTL。
实际上非常简单(假设您使用的是Servlet 2.5或更新版本):
/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的变化引起的 - &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)
在 POM XML 文件中添加 JSTL 依赖文件(如果使用 Maven 项目)否则添加 JSTL jar 文件进入项目
在要使用 JSTL 标记的 JSP 中添加以下行 - <%@ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core" %>
在您的代码中,您使用了 JSTL 标记和表达式语言,其编写为 ${myString}。要支持表达式语言,您必须在 Page 指令中使用 isELIgnored="false" 属性
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1" isELIgnored="false" %>