31

在 java web 应用程序中,有一个名为web.xml的文件,它有一个版本控制。

这究竟是什么?这有什么用途?

是 web.xml 的 SO wiki。但这并不能真正解释我。

它允许您在 Web 应用程序中定义、声明和配置基于 Servlet API 的实现,例如 servlet、过滤器和侦听器。

示例web.xml版本控制:

<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 http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
         version="3.0">

有人可以用简单的例子来解释吗?

4

3 回答 3

36

Web.xml是您定义 Web 应用程序配置的中心位置。例如,您可以在那里指定:

我还建议研究 Servlet 3.0 规范,其中许多参数可以通过注释进行设置。

版本控制

版本控制是指web.xml文件语法必须遵守的 XML 模式版本。更重要的是,它还指示您的应用程序实现的 Servlet 规范的版本。web.xmlServlet 3.0 兼容应该如何开始的示例:

<web-app version="3.0" 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 http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">

大多数 IDE 会自动生成web.xml. 如果出于某种原因要手动更改它,请注意匹配 web-app 和 xsd 的版本。

具体例子web.xml见:

于 2013-04-13T08:38:06.467 回答
6

从 Servlet 3.0 开始,Web.xml 是可选的,您可以使用@WebServlet注解代替。

如果您使用的是 Springorg.springframework.web.WebApplicationInitializer 则可以替代使用或与web.xml 一起使用。

WebApplicationInitializer:

要在 Servlet 3.0+ 环境中实现的接口,以便以编程方式配置 ServletContext——与传统的基于 web.xml 的方法相反(或可能结合使用)。

回答您的以下问题。

它有什么影响?(在 Spring 应用程序中

web.xml 版本控制:

但是,如果应用程序WEB-INF/web.xml中存在,则其版本属性必须设置为 "3.0" 或更高版本,否则servlet 容器ServletContainerInitializer 将忽略引导

您可以在此处阅读 WebApplicationInitializer 的完整 Java 文档。

于 2016-07-08T16:00:57.593 回答
2

我从 web.xml esp 中了解到的部分web-app version="3.0"是您的 servlet 的版本。所以,我将我的答案限制在 servlet 版本以及为什么它如此重要。当您使用 Java EE 进行编程时,您可能知道 servlet 的版本控制着大多数其他标准。

例如,

JSF 2.0 需要 SERVLET 2.5 附带 JAVA EE5 和 WEBLOGIC 10.3.X 支持所有这些技术,对于其他容器,您应该查看发行说明。其次,JSF 2.1 需要 SERVLET 3.0 自带 JAVA EE6,WEBLOGIC 12c 支持所有这些技术。当然向后兼容是有保证的,但是大多数情况下可能会出现一些问题。

当我们查看 weblogic 12c 发行说明时,我将与 servlet 版本一起支持的最重要的技术加注了星标。我希望这对您也有用 Miljen Mikic 的出色回答。

Standard    Version
Contexts and Dependency Injection for Java EE   1.0
Dependency Injection for Java EE    1.0
Expression Language (EL)    2.2, 2.1, 2.0
Only JSP 2.0 and greater supports Expression Language 2.x.
JAAS    1.0 Full
JASPIC  1.0
Java API for XML-Based Web Services (JAX-WS)    2.2, 2.1, 2.0
Java API for RESTful Web Services (JAX-RS)  1.1
Java Authorization Contract for Containers (JACC)   1.4
**Java EE   6.0**
Java EE Application Deployment  1.2
Java EE Bean Validation 1.1
Jave EE Common Annotations  1.0
Java EE Connector Architecture  1.6
Java EE EJB 3.1
Java EE Enterprise Web Services 1.3, 1.2, 1.1
Jave EE Interceptors    1.1
**Java EE JDBC  4.0, 3.0**
Java EE JMS 1.1, 1.0.2b
Java EE JNDI    1.2
**Java EE JSF   2.1, 2.0, 1.2, 1.1**
Java EE JSP 2.2, 2.1, 2.0, 1.2, and 1.1
JSP 1.2. and 1.1 include Expression Language (EL), but do not support EL 2.x or greater.
Java EE Managed Beans   1.0
**Java EE Servlet   3.0, 2.5, 2.4, 2.3, and 2.2**
Java RMI    1.0
JavaMail    1.4
JAX-B   2.2, 2.1, 2.0
JAX-P   1.3, 1.2, 1.1
JAX-R   1.0
JAX-RPC 1.1
JCE 1.4
**JDKs  6.0 (aka 1.6), 5.0 (aka 1.5, clients only)**
JMX 1.2, 1.0
JPA 2.0, 1.0
JSR 77: Java EE Management  1.1
JSTL    1.2
Managed Beans   1.0
OTS/JTA OTS 1.2 and JTA 1.1
RMI/IIOP    1.0
SOAP Attachments for Java (SAAJ)    1.3, 1.2
Streaming API for XML (StAX)    1.0
Web Services Metadata for the Java Platform 2.0, 1.1
于 2013-04-13T11:17:38.050 回答