元素顺序在web.xml中是否重要?

时间:2015-02-05 14:40:24

标签: java xml servlets web.xml

当我在servlet项目中尝试以下代码时,

  <servlet>
   <init-param>
     <param-name>a</param-name>
     <param-value>x</param-value>
    </init-param>
    <servlet-name>Result</servlet-name>
    <servlet-class>Result</servlet-class>
  </servlet>

它显示错误,但是当我尝试这个时,

 <servlet>
    <servlet-name>Result</servlet-name>
    <servlet-class>Result</servlet-class>
    <init-param>
     <param-name>a</param-name>
     <param-value>x</param-value>
    </init-param>
    </servlet>

没有错误。是否有预定义的订单?

3 个答案:

答案 0 :(得分:1)

对于web.xml,是的。 servlet XSD(如果您使用的是旧版本,则为DTD)要求按特定顺序列出元素。

答案 1 :(得分:1)

我假设您正在谈论web.xml,以下是指定架构的方式:

DTD

<!DOCTYPE web-app
    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    "http://java.sun.com/dtd/web-app_2_3.dtd">

XML架构

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

因此,如果您熟悉XML,则应该很容易验证...

如果没有,你可以阅读一些tutorial另一种选择就是使用一些工具......

答案 2 :(得分:1)

对于schema和dtd,有一个指定的顺序。如果您在IDE中引用它们,它们将在出现故障时显示错误。但是,大多数J2EE容器在解析时都不会针对模式或dtd验证web.xml,因此在使用.war / .ear时不会导致错误。

您应该尝试按照指定的顺序保留它们,因为如果它们被分组,更容易找到并进行更改。

如果您阅读了dtd / schema,它将显示订单。您可以从此处其他答案中列出的网址下载。