Jakarta ee web应用程序的具体版本是什么?它会影响什么?

Jakarta ee web应用程序的具体版本是什么?它会影响什么?,jakarta-ee,web.xml,Jakarta Ee,Web.xml,在java web应用程序中,有一个名为web.xml的文件,它有一个版本控制 这到底是什么?它是用来干什么的 是web.xml的SO wiki。但这并不能很好地解释我 它允许您定义、声明和配置基于Servlet的API web应用程序中的实现,如servlet、筛选器和 听众 web.xml版本控制示例: <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/200

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

这到底是什么?它是用来干什么的

是web.xml的SO wiki。但这并不能很好地解释我

它允许您定义、声明和配置基于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">


有人能用简单的例子解释一下吗?

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

  • servlet映射,即哪个URL路径指向哪个Java类(例如,当用户键入时,您可以将该请求指向保存servlet实现的KorayServlet.Java类)
  • 授权参数,例如用户Tugay可以访问但不能访问
  • 所有其他安全设置,例如,当有人试图打开时,您将其重定向到https://something.com/Restricted,即必须使用SSL
  • 网站的欢迎页面(例如,当用户键入您将其重定向到的内容时)
我还建议研究Servlet3.0规范,其中许多参数可以通过注释设置

版本控制 版本控制是指
web.XML
文件的语法必须遵守的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的版本

有关
web.xml
的具体示例,请参阅:


我从web.xml esp中了解到的
web app version=“3.0”
是您的servlet版本。因此,我的答案仅限于servlet版本以及为什么它如此重要。您可能知道,在使用JavaEE编程时,servlet的版本控制着大多数其他标准

比如说,

JSF2.0要求Servlet2.5附带JavaEE5和WebLogic10.3.X支持所有这些技术,对于其他容器,您应该查看发行说明。其次 JSF2.1要求Servlet3.0与JavaEE6一起提供,WebLogic12c支持所有这些技术。当然,可以确保向后兼容性,但是在大多数情况下可能会出现一些问题

当我们查看WebLogic12c发行说明时,我列举了servlet版本支持的最重要的技术。我希望这对米尔扬·米基奇的回答同样有用

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

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

如果您使用的是Spring
org.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文档。

此文件的版本有多重要?这是否像告诉容器我正在使用什么实现一样?所以我已经有了JavaServlet类来实现版本3附带的方法?因此,我可以将我的webapp声明为版本3,但使用Tomcat 5,如果我不使用Servlet 3.0 API中引入的任何方法,就可以很好地相处?@KorayTugay是的,你会很好的。但是,如果在web.xml中混合使用不同的版本(例如,将
web-appversion=“2.5”
xsi:schemaLocation=“…web-app_3_0.xsd”
),则无法构建应用程序。servlet不是Java类吗?它是如何由我们在web.xml中提供的版本决定的?这不取决于我们正在使用的实现吗?你说:第二,JSF2.1需要SERVLET 3.0,但是我已经成功地使用了JSF-impl-2.1.19,我的web xml版本是2.5?是的,你可能是对的,但我注意到web.xml的创建时间取决于你的SERVLET版本。你有没有在你的应用程序中使用过旧版本jsf不支持的JSF2.1特性?这里似乎有那么多点击率很高的选民,为什么没有人准备在投票时发表评论?