Search code examples
web.xmlurl-pattern

The content of element type "servlet-mapping" must match "(servlet-name,url-pattern)"


My file web.xml is

<!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 id="WebApp_1383925467813">
    <display-name>Archetype Created Web Application</display-name>
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:applicationContext.xml</param-value>
  </context-param>
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
 <servlet>
    <servlet-name>dispatcher</servlet-name>
    <servlet-class>
        org.springframework.web.servlet.DispatcherServlet
    </servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>

   <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>/</url-pattern>
        <url-pattern>/m/*</url-pattern>
        <url-pattern>/t/*</url-pattern>
    </servlet-mapping>


  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>

Myeclipse reports this error:

The content of element type "servlet-mapping" must match "(servlet-name,url-pattern)"

What's the problem? Thank's


Solution

  • As per the DTD we can have only one <url-pattern> inside a <servlet-mapping> tag.

    <!ELEMENT servlet-mapping (servlet-name, url-pattern)>

    Rewrite your xml like:

    <servlet-mapping>
            <servlet-name>dispatcher</servlet-name>
            <url-pattern>/</url-pattern>
    </servlet-mapping>
    
    <servlet-mapping>
            <servlet-name>dispatcher</servlet-name>
            <url-pattern>/m/*</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
            <servlet-name>dispatcher</servlet-name>
            <url-pattern>/t/*</url-pattern>
    </servlet-mapping>