Tomcat中web.xml语句顺序有讲究。

Tomcat中web.xml语句顺序有讲究。

这2天tomcat总是出问题,不能正常启动,错误如下: org.xml.sax.SAXParseException: The content of element type "web-app" must match "(icon?,display-name?,description?,distributable?,context-param*,filter*,filter-mapping*,listener*,servlet*,servlet-mapping*,session-config?,mime-mapping*,welcome-file-list?,error-page*,taglib*,resource-env-ref*,resource-ref*,security-constraint*,login-config?,security-role*,env-entry*,ejb-ref*,ejb-local-ref*)".

后来发现原因竟然和DTD 的格式要求有关,原文在:

我copy了基本要点:

===================================================

So for the 2.3 version of the DTD, you have to put the tags in the correct order. You have:
<web-app>
  <servlet></servlet>
  <servlet-mapping></servlet-mapping>
  <servlet></servlet>
  <servlet-mapping></servlet-mapping>
  <servlet></servlet>
  <servlet-mapping></servlet-mapping>
  <!-- ... -->
  <listener></listener>
</web-app>


But the DTD says it must be:
<web-app>
  <listener></listener>
  <servlet></servlet>
  <servlet></servlet>
  <servlet></servlet>
  <!-- ... -->
  <servlet-mapping></servlet-mapping>
  <servlet-mapping></servlet-mapping>
  <servlet-mapping></servlet-mapping>
  <!-- ... -->
</web-app>

======================================

The error message tells you the order they must be in:

 content of element type "web-app" must match "(icon?,display-name?,description?,distributable?,context-param*,
filter*,filter-mapping*,listener*,servlet*,servlet-mapping*,
session-config?,mime-mapping*,welcome-file-list?,error-page*,
taglib*,resource-env-ref*,resource-ref*,security-constraint*,
login-config?,security-role*,env-entry*,ejb-ref*,ejb-local-ref*)"

Means the order is:
icon (0 or 1 times)
display-name (0 or 1 times)
description (0 or 1 times)
distributable (0 or 1 times)
context-param (0 or more times)
filter (0 or more times)
filter-mapping (0 or more times)
listener (0 or more times)
servlet (0 or more times)
servlet-mapping (0 or more times)
session-config (0 or 1 times)
mime-mapping (0 or more times)
welcome-file-list (0 or 1 times)
error-page (0 or more times)
taglib (0 or more times)
resource-env-ref (0 or more times)
resource-ref (0 or more times)
security-constraint (0 or more times)
login-config (0 or 1 times)
security-role (0 or more times)
env-entry (0 or more times)
ejb-ref (0 or more times)
ejb-local-ref (0 or more times)

==============================

i also want to know that
are tags supposed to be in some order in version 2.4, or i can have them in any order ?


Answer:   

The 2.4 spec can be in any order.

你可能感兴趣的:(Tomcat中web.xml语句顺序有讲究。)