3

我是 Java EE 新手。我发现 web.xml 是许多 servlet 容器/应用程序服务器(如 tomcat、glassfish 等)使用的标准文件(部署描述符)。在许多教程中,我可以找到各种 XML 标记,我应该将自定义值放在某处以实现给定功能(在教程的上下文中)。但这很混乱——我不知道我是否可以在 spring/tomcat 中重复使用最初在 glassfish/jsf 中使用的标签(这只是一个示例问题)。web.xml 是否有一个主要的 Java EE 规范,以便我知道我可以在其中放置哪些标签,独立于使用的 Web 服务器和框架?

我读到,例如 tomcat 为 web.xml 文件提供了一些特定选项,所以我猜每个服务器的行为都会有所不同(就像 Web 浏览器可以不同地解释 HTML/CSS) - 但是某处是否有主要文档(独立于框架)?

4

3 回答 3

4

通常在java世界中通用的规范叫做JSR。例如,Servlet 规范包含 web.xml 的定义(以及如何解释它)。有多个 Servlet 版本,它们由不同的 JSR-s 指定。例如,可以在此处找到 Servlet 2.4 规范:http: //jcp.org/en/jsr/detail ? id=154(称为 JSR-154)

我认为规范不允许不同的供应商使用不同的web.xml-s。相反,他们建议使用带有 web.xml 的其他文件。因为 Tomcat 曾经是 Servlet 的参考实现(但不再是),所以我认为 Tomcat 对 JSR 非常严格。

目前最新的 servlet 规范是 3.0(3.1 即将推出)

于 2013-02-12T08:14:54.740 回答
2

当然,官方规范在上面提到的各种 JSR 中。

但一个方便的技巧是查看 xml 文件顶部的“schemaLocation”属性。把它放在网络浏览器中,您将获得包含所有标签和注释的 XSD 文档。

在这些规范中,您还将找到有关问题第二部分的信息。注释提供配置,这些配置可以被部署描述符 (web.xml) 中的值覆盖,每个应用程序服务器品牌还可以在自己的部署描述符中包含额外的配置信息。IE。WEB-INF/jboss-web.xml

这些供应商特定的部署描述符可能具有与 web.xml 同名的标签并覆盖 web.xml 值。

web.xml(和其他标准部署描述符)是标准化的。供应商特定的部署描述符取决于每个应用程序服务器供应商。

于 2015-08-27T06:37:46.027 回答
1

我认为您应该始终查看与您正在使用的应用程序服务器相关的文档。

例如,如果您使用 WebSphere,请参阅此

对于 WebLogic看到这个

有趣的是,在 Servlet 3.0 中,您可以通过使用注解创建一个可能根本不使用部署描述符的应用程序。这并不意味着不再使用 WEB.xml。是一篇关于 servlet 3.0 的好文章。

于 2013-02-17T11:28:02.927 回答