获取错误:元素类型“web-app”的内容必须匹配,

时间:2011-04-19 07:20:27

标签: servlets web.xml

当我在Eclipse Helios Service Release 2中构建项目时,我的web.xml出现错误。请建议我为此做些什么。在我的项目中,我使用的是DTD 2.2。错误如下。

  

元素类型“web-app”的内容必须匹配“(图标?,显示 -    名字?,说明?,分配?,的context-param *,* servlet的,servlet的映射*,会话配置?,mime-    *映射,欢迎文件列表?,错误页*,*的taglib,资源引用*,安全约束*,登录-配置?性,保密性    角色*,ENV-条目*,EJB-REF *)”。

3 个答案:

答案 0 :(得分:76)

错误消息详细告诉您元素的放置顺序以及允许的元素数量。换句话说,<web-app>的{​​{1}}内元素的排序或数量不正确。例如,根据错误消息,web.xml需要在 <servlet>之前<servlet-mapping>后缀表示可能有零或一个?后缀表示可能有零或多个

因此,以下示例为无效

*

以下示例为有效

<servlet>...</servlet>
<servlet-mapping>...</servlet-mapping>

<servlet>...</servlet>
<servlet-mapping>...</servlet-mapping>

<servlet>...</servlet>
<servlet-mapping>...</servlet-mapping>

答案 1 :(得分:4)

如果有兴趣我收到错误页面的相同例外。这个节点需要在servlet之后,但在servlet-mapping之前。

答案 2 :(得分:4)

我在spring中将struts2集成到Eclipse时遇到了同样的问题。经过一些测试,我发现这是web.xml文件中标签顺序的问题。以下文件有错误

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

<web-app>
    <display-name>Archetype Created Web Application</display-name>
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <filter>
        <filter-name>struts</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
        <init-param>
            <param-name>struts.devMode</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>

    <filter-mapping>
        <filter-name>struts</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
</web-app>

如果我将订单改为

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

<web-app>
    <display-name>Archetype Created Web Application</display-name>
    <filter>
        <filter-name>struts</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
        <init-param>
            <param-name>struts.devMode</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>

    <filter-mapping>
        <filter-name>struts</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
</web-app>

错误将被消除。

希望这对遇到同样问题的人有所帮助。