【问题标题】:Custom JSP Compiler in Tomcat 6 ?Tomcat 6 中的自定义 JSP 编译器?
【发布时间】:2023-03-07 07:08:01
【问题描述】:

我正在将我的应用程序服务器从 Resin 移动到 Tomcat 6。在此过程中,我面临着很多关于 JSP 编译的问题。 (由于语法错误而收到大量 JasperExceptions)。 我的 JSP 使用 JSTL 1.1 编译并在 Resin 中顺利运行。

有什么方法可以使用 Resin 的 JSP 编译类,即“com.caucho.jsp.JspCompiler”,而不是 Tomcat 6 中提供的 Jasper 编译器。

总之Tomcat使用特定的编译器代替Jasper

【问题讨论】:

  • 您到底面临哪些错误?请说出一些。
  • 问题是我们不符合 JSP 规范,并且 Resin 编译器没有抛出任何异常(Resin.jar 中存在 com.caucho.jsp.JspCompiler)。现在在 Tomcat 中,文章告诉我它对 JSP 标准规范非常严格。
  • 在 Tomcat 6 中运行我们的 Web 应用程序时,我们遇到的一些异常是: *当未指定默认命名空间时,函数 contains 必须带有前缀 * 属性值用 " 引用,必须在值内使用时被转义。

标签: jsp tomcat jstl resin


【解决方案1】:

您是否已下载 JSTL 库并将其添加到您的应用程序中? Resin 似乎在其发行版中包含 JSTL,而 Tomcat 没有。

给定在 Tomcat 上运行的示例 jsp

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<body>
    <h1>
    <c:out value="Hello World" />
    </h1>
</body>
</html>

在安装 JSTL 库之前,tomcat 出现以下错误

org.apache.jasper.JasperException: The absolute uri: http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml or the jar files deployed with this application
    at org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:51)
    at org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:409)
    at org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:116)

一旦安装了 JSTL 库 (Download Link),错误就会消失,Hello World 会打印到屏幕上。

由于您没有向我们展示错误,我会假设您的错误可能是相似的。 应该不需要更改使用哪个编译器。

【讨论】:

  • 我使用了适当的 JSTL 库。问题是我正在将大约 200 jsps 的 Web 应用程序从 Resin 3.1.3 迁移到 Tomcat 6。问题是我们不符合 JSP 规范并且 Resin 编译器没有抛出任何异常(com.caucho.jsp .JspCompiler 存在于 Resin.jar 中)。现在在 Tomcat 中,文章告诉我它对 JSP 标准规范非常严格。
  • 在 Tomcat 6 中运行我们的 Web 应用程序时,我们遇到的一些异常是: *当未指定默认命名空间时,函数 contains 必须带有前缀 * 属性值用 " 引用,必须在值内使用时被转义。
  • 有什么方法可以禁用 Jasper 编译器并使用 Resin.jar 中的 com.caucho.jsp.JspCompiler 作为 Tomcat 中的 JSP 编译器。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多