Question

What is the difference between these url mappings ?

<url-pattern>/servlet</url-pattern>

and

<url-pattern>/servlet/*</url-pattern>

and

<url-pattern>/*</url-pattern>

and

 <url-pattern>*.do</url-pattern>
Was it helpful?

Solution 2

Note that root (/) means the context root of your web application.

<url-pattern>/servlet</url-pattern>

Matches to a specific resource that maps directly to path servlet under root(/)

<url-pattern>/servlet/*</url-pattern>

Matches to any resource under /servlet.

<url-pattern>/*</url-pattern>

Matches to any resource under root(/).

<url-pattern>*.do</url-pattern>

Matches to a specific file pattern i.e. that ends with .do.

OTHER TIPS

URL patterns are explained in the Servlet 3.0 Specification, section 12.2 Specification of Mapping:

In the Web application deployment descriptor, the following syntax is used to define mappings:

  • A string beginning with a / character and ending with a /* suffix is used for path mapping.

  • A string beginning with a *. prefix is used as an extension mapping.

  • The empty string ("") is a special URL pattern that exactly maps to the application's context root, i.e., requests of the form http://host:port/<context-root>/. In this case the path info is / and the servlet path and context path is empty string (““).

  • A string containing only the / character indicates the "default" servlet of the application. In this case the servlet path is the request URI minus the context path and the path info is null.

  • All other strings are used for exact matches only.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top