5

Possible Duplicate:
Servlet mapping / vs /*

What is the difference of '/' and '/*' in servlet url mapping?

Since I am reading the book spring in action,and I found these words:

Next we must indicate what URLs will be handled by the DispatcherServlet. It’s common to find DispatcherServlet mapped to URL patterns such as .htm, /, or /app. But these URL patterns have a few problems:

  • The *.htm pattern implies that the response will always be in HTML form (which, as we’ll learn in chapter 11, isn’t necessarily the case).
  • Mapping it to /* doesn’t imply any specify type of response, but indicates that DispatcherServlet will serve all requests. That makes serving static content such as images and stylesheets more difficult than necessary.
  • The /app pattern (or something similar) helps us distinguish Dispatcher-Servlet-served content from other types of content. But then we have an implementation detail (specifically, the /app path) exposed in our URLs. That leads to complicated URL rewriting tactics to hide the /app path.

Rather than use any of those flawed servlet-mapping schemes, I prefer mapping DispatcherServlet like this:

<servlet-mapping>
  <servlet-name>spitter</servlet-name>
  <url-pattern>/</url-pattern>
</servlet-mapping>

By mapping DispatcherServlet to /, I’m saying that it’s the default servlet and that it’ll be responsible for handling all requests, including requests for static content.

According the above words, it seems that both '/' and '/*' will server all the request.

What is the difference?

Community
  • 1
  • 1
hguser
  • 35,079
  • 54
  • 159
  • 293

1 Answers1

3

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. &

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

The pattern /* will force everything through your Servlet.

The pattern / will make your Servlet the default Servlet for the app, means that it will pick up every pattern that doesn't have another exact match.

Java
  • 2,451
  • 10
  • 48
  • 85