在jsp中启用javaserverpages标准标记库(jstl)

avwztpqn  于 2021-10-10  发布在  Java
关注(0)|答案(3)|浏览(371)

我觉得我遗漏了一些东西——从表面上看,jsp提供了对标记的支持,正如这个问题的答案所示(这个人问了一个纯jsp问题,得到了一个涉及标记的答案)。但是如果我尝试运行给定的代码

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

(有 myString 当然,jsp只是将上面的行写入html。
我需要做一些额外的事情来启用它吗?

dwthyt8l

dwthyt8l1#

jstl支持取决于所使用的服务器/servletcontainer。有些船有jstl,有些船没有。这与jsp/servlet版本无关。通常,普通的jee服务器(如wildfly/payara/tomee)已经附带了jstl,但是像tomcat/jetty/undertow这样的简陋的servletcontainers却没有。对于它们,您需要自己安装jstl。
它实际上非常简单(假设您使用的是Servlet2.5或更高版本):
按照以下答案中的说明安装jstl:如何安装jstl?绝对uri:http://java.sun.com/jstl/core 无法解决。
根据此jstl文档在jsp顶部声明标记(单击任何标记库查看声明示例)。对于jstl core,它如下所示:

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

这就是全部。如果您(仍然)使用Servlet2.4,那么您需要下载 jstl.jarstandard.jar 相反(这是jstl 1.1的一部分)。剩下的步骤是相同的(只需放入classpath并在jsp顶部声明)。
您可能会注意到,一些糟糕的在线教程会建议提取jar文件并将Web应用程序的内容弄乱 web.xml 使用tld声明。您永远不应该这样做,这是一个错误的建议,它是由jstl 1.0->jstl 1.1步骤中taglib uri的更改引起的。他们没有更新jsp中的标记库uri,而是决定在jsp中重新定义旧的标记库uri web.xml 这成了一个神话。
jsp本身只附带 <jsp:> 开箱即用的标签。这些不是jstl的一部分。

另见:

javaee到底是什么?
如何安装jstl?绝对uri:http://java.sun.com/jstl/core 无法解决

mxg2im7a

mxg2im7a2#

您需要在jsp顶部声明标记库:

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

s8vozzvw3#

在pom xml文件中添加jstl依赖项文件(如果使用maven项目),否则将jstl jar文件添加到项目中
在jsp中添加要使用jstl标记的下一行-<%@taglib prefix=“c”uri=”http://java.sun.com/jsp/jstl/core" %>
在您的代码中,您使用的是jstl标记和表达式语言,它被写成${mystring}。要支持表达式语言,必须在page指令中设置isAligned=“false”属性
<%@page language=“java”contenttype=“text/html;charset=iso-8859-1“pageencoding=“iso-8859-1”IsAligned=“false”%%>

相关问题