在java Web应用程序中,有一个名为web.xml的文件,它有一个版本控制。
这是什么意思?它是干什么用的?Here是web.xml的SO维基。但它并没有真正解释我。
它允许您基于Servlet API定义,声明和配置 Web应用程序中的实现,例如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">
答案 0 :(得分:30)
Web.xml
是您定义Web应用程序配置的中心位置。例如,您可以在那里指定:
我还建议研究Servlet 3.0规范,其中许多参数可以通过注释设置。
版本控制是指XML模式版本,即web.xml
文件的语法必须遵守。更重要的是,它还指示应用程序实现的Servlet规范的版本。应该如何开始符合Servlet 3.0 web.xml
的示例:
<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的版本 - 例如,请参阅this answer。
有关web.xml
的具体示例,请参阅:
答案 1 :(得分:4)
从Servlet 3.0开始,Web.xml是可选的,您可以使用@WebServlet
注释。
如果您使用的是Spring ,则可以使用来代替,或者使用 web.xml。
WebApplicationInitializer:
在Servlet 3.0+中实现的接口 环境以便以编程方式配置ServletContext - 与传统的基于web.xml的方法相反(或可能与其结合)。
回答您的以下问题。
它有什么影响? (在Spring应用程序中)
web.xml版本控制:
但是,如果org.springframework.web.WebApplicationInitializer
存在在应用程序中,其版本属性必须设置为“3.0”或更高 ,否则servlet容器将忽略WEB-INF/web.xml
bootstrapping 。
您可以阅读WebApplicationInitializer here的完整Java文档。
答案 2 :(得分:1)
我从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