Java Web应用程序 - 什么决定了我的Servlet API版本?它是否在web.xml中指定?

sta*_*low 23 web-applications servlet-3.0

我正在使用Eclipse EE Juno和我当前的Web应用程序正在使用Dynamic web modules 2.4.我试图将版本提升到3.0,但出于某种原因,我无法做到.当我尝试更改项目方面的版本时,我得到了Cannot change version of project facet Dynamic Web Module to 3.0.我的web.xml文件中是否有可能确定这个?如果不是单独从Eclipse项目构面设置中更改动态Web模块版本,该如何更改?

Tom*_*icz 39

Servlet 2.4 in web.xml:

<web-app version="2.4"
  xmlns="http://java.sun.com/xml/ns/j2ee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="
    http://java.sun.com/xml/ns/j2ee
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
Run Code Online (Sandbox Code Playgroud)

Servlet 3.0 in 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">
Run Code Online (Sandbox Code Playgroud)

这是唯一的区别.其余的是您的IDE配置.为了使用Servlet 3.0,您必须在CLASSPATH上拥有3.0 JAR,以便可以使用新的注释和其他类.但是不要在WAR中包含servlet JAR,实现应该来自servlet容器.

  • [Servlet 3.1](https://jcp.org/en/jsr/detail?id=340)现已于2013-05发行。有关历史记录,请参见[Wikipedia](https://en.wikipedia.org/wiki/Java_servlet#History)。 (2认同)