获取错误:元素types“web-app”的内容必须匹配,
当我在Eclipse Helios Service Release 2中构build项目时,在web.xml
出现错误。 请build议我必须为此做什么。 在我的项目中,我正在使用DTD 2.2。 错误在下面。
元素types“web-app”的内容必须匹配“(图标?,显示名称?描述?分布?上下文参数?servlet?servlet映射?会话configuration?mime映射? ,welcome-file-list?,error-page *,taglib *,resource-ref *,security-constraint *,login-config?,security-role *,env-entry *,ejb-ref *)。
这个错误信息告诉你这个元素应该按什么顺序放置,以及它们有多less个是允许的。 换句话说, web.xml
的<web-app>
元素的顺序或数量是不正确的。 例如,根据错误消息, <servlet>
需要在 <servlet-mapping>
。 这个?
后缀表示可能有零个或其中一个 。 *
后缀表示可能有零个或多个 。
所以,下面的例子是无效的 :
<servlet>...</servlet> <servlet-mapping>...</servlet-mapping> <servlet>...</servlet> <servlet-mapping>...</servlet-mapping> <servlet>...</servlet> <servlet-mapping>...</servlet-mapping>
虽然下面的例子是有效的 :
<servlet>...</servlet> <servlet>...</servlet> <servlet>...</servlet> <servlet-mapping>...</servlet-mapping> <servlet-mapping>...</servlet-mapping> <servlet-mapping>...</servlet-mapping>
如果有人感兴趣,我收到了错误页面的相同exception。 这个节点需要在servlet之后,但在servlet映射之前。
当我将spring
与struts2
集成到Eclipse
时,我遇到同样的问题。 经过一些testing,我发现这是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>
错误将被消除。
希望这对遇到同样问题的人有帮助。
- 我怎样才能读取一个HttpServletReponses输出stream?
- 如何在基于servlet的Web应用程序中暂时保存生成的文件
- ServletRequest.getParameterMap()返回Map <String,String >和ServletRequest.getParameter()返回String?
- 在Servlet中为HTTP和HTTPS请求获取完整的URL和查询string
- HttpServletRequest完成URL
- 在由Servlet转发的JSP中获取请求URL
- Servlet vs RESTful
- 如何在WAR中使用注释定义servletfilter的执行顺序
- 如何删除Java Servlet中的Cookie