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

时间:2012-08-27 17:01:16

标签: 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模块版本,该如何更改?

1 个答案:

答案 0 :(得分:39)

web.xml中的Servlet 2.4:

<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">

web.xml中的Servlet 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配置。为了使用Servlet 3.0,您必须在CLASSPATH上拥有3.0 JAR,以便可以使用新的注释和其他类。但是不要在WAR中包含servlet JAR,实现应该来自servlet容器。