Fai*_*kar 1 jsp tomcat jstl jakarta-ee
我正在尝试使用 JSTL 执行 JSP,但我无法执行。我有 Apache Tomcat 10,即jakarta.servlet.*不是javax.servlet.*. 因此,每当我使用 JSTL 1.2.5 文件执行 Web 应用程序时,就会收到错误消息:
jakarta.servlet.ServletException: java.lang.NoClassDefFoundError: javax/servlet/jsp/tagext/TagLibraryValidator
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339)
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:778)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
Run Code Online (Sandbox Code Playgroud)
我试图在网上找到已解决的类似问题/问题,但找不到。如何在带有 Tomcat 10 的 JSP 中使用 JSTL?
我的索引 JSP 文件代码:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<title>Tag Example</title>
</head>
<body>
<c:out value="${'Hello Yo'}"/>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
JSTL 的 Jakarta EE 9 版本在此处作为 JSTL 2.0 提供。
<dependency>
<groupId>org.glassfish.web</groupId>
<artifactId>jakarta.servlet.jsp.jstl</artifactId>
<version>2.0.0</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
这是 JSTL 2.0 的参考实现,目前也用于 GlassFish 6.0(最初来自 Sun,然后归 Oracle,然后归 Eclipse)。通常 Apache 也有自己的实现,但它没有作为 JSTL 2.0 提供(还没有?)。
为了完整起见,并确认一下,是的,JSTL 2.0 的 taglib URI仍然引用原始java.sun.com主机,而您直观地期望它也被迁移到xmlns.jcp.org甚至jakarta.ee.
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
Run Code Online (Sandbox Code Playgroud)
小智 6
对于您的配置,您将需要这两个文件才能使 JSTL 正常工作:
如果将它们放在项目的 lib 文件夹中,那么它只适用于该应用程序。因此,我建议您将它们与其他 jar 文件一起放入 TomCat 应用程序的 lib 文件夹 (.../apache-tomcat-10.0.6/lib/) 中。
这是一个很好的话题,详细讨论了这个问题。
| 归档时间: |
|
| 查看次数: |
3355 次 |
| 最近记录: |