Servlet 2.5 自动导入

发布于 2024-12-18 03:42:31 字数 599 浏览 0 评论 0原文

这是一个奇怪的现象,我希望有人能够阐明这一点。我们正在从 Weblogic 8.1 迁移到 10.3.4,作为此过程的一部分,我们正在更新各种内容,包括我们的部署描述符。在我们的 web 应用程序中,我们的 web.xml 是 Servlet 版本 2.3,具有以下

我们现在已将其更改为 2.5,如下

自更改以来,我们遇到了一些无法在运行时编译的 jsps。它们失败是因为我们没有为该 jsp 导入一些必要的类。例如,在其中一个中,我们使用日历(java.util),但由于某种原因未能为其编写导入声明。由于某种原因,在 2.3 中这似乎并不重要。有谁知道这是否是 2.3 的一个功能,某些类在未声明导入时会动态导入。我完全理解它们应该正确导入,但我担心我们可能还有其他一些 jsp 会失败。

This is a strange which I'm hoping someone can shed some light on. We are in the process of moving from Weblogic 8.1 to 10.3.4 and as part of this we are updating various things including our deployment descriptors. In our webapp our web.xml was Servlet verion 2.3 with the following <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">

We have now changed it to 2.5 as follows <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">

Since the change we have come across some jsps that fail to compile at runtime. They fail because we haven't imported some necessary classes for that jsp. For example in one we are using a Calendar (java.util) but for whatever reason failed to write the import declaration for it. For some reason in 2.3 this didn't seem to matter. Does anyone know if this was a feature of 2.3 that certain classes were imported on the fly when the import was not declared. I fully appreciate they should be imported properly but I fear we may have a few other jsps which will fail.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

甲如呢乙后呢 2024-12-25 03:42:31

来自 http://docs.oracle.com/cd/E12840_01/ wls/docs103/webapp/weblogic_xml.html

隐式 Servlet 2.5 包导入

Servlet 2.5 规范要求仅隐式导入 java.lang.*、javax.servlet.*、javax.servlet.jsp.* 和 javax.servlet.http.* 包。为了符合 Servlet 2.5 规范,WebLogic Server 将仅导入这些强制包。而以前版本的 WebLogic Server 还导入了 java.io.*、java.util.* 和 javax.servlet.jsp.tagext.* 包。

如果发生以下任一情况,WebLogic Server 将遵循以前的 2.4 或更早版本的行为并导入非强制包:

weblogic.xml 描述符文件中的向后兼容标志设置为 true。

Web应用程序版本为2.4或更早版本。

2.5 版 Web 应用程序中的各个 JSP/TAG 文件是 2.0 版或更早版本。

From http://docs.oracle.com/cd/E12840_01/wls/docs103/webapp/weblogic_xml.html

Implicit Servlet 2.5 Package Imports

The Servlet 2.5 specification mandates that only the java.lang.*, javax.servlet.*, javax.servlet.jsp.*, and javax.servlet.http.* packages be implicitly imported. In compliance with the Servlet 2.5 specification, WebLogic Server will only import these mandated packages. Whereas, previous releases of WebLogic Server also imported the java.io.*, java.util.*, and javax.servlet.jsp.tagext.* packages.

WebLogic Server will follow the previous 2.4 or earlier behavior and import the non-mandated packages, if any of the following occur:

The backward-compatible flag is set to true in the weblogic.xml descriptor file.

The web application version is 2.4 or earlier.

The individual JSP/TAG files in a version 2.5 web application are version 2.0 or earlier.

给不了的爱 2024-12-25 03:42:31

也许 WebLogic 的早期版本进行了导入,因为它在内部使用了 Calendar(或 java.util.*)。然而,这不在规范中。

您可以使用 weblogic appc 编译器(或 jspc,但已弃用)来预编译 JSP 并查看哪些未编译。

请参阅http://docs.oracle.com/cd/ E12840_01/wls/docs103/webapp/reference.html#wp57794

Maybe the previous version of WebLogic did the import because it used Calendar (or java.util.*) internally. This is however not in the spec.

You could use the weblogic appc compiler (or jspc, but it's deprecated) to precompile the JSPs and see which ones don't compile.

See http://docs.oracle.com/cd/E12840_01/wls/docs103/webapp/reference.html#wp57794

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文