Possible Duplicate:
Servlet mapping / vs /*
servlet url 映射中“/”和“/*”有什么区别?
自从我读《Spring in Action》这本书以来,我发现了这些话:
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.
根据上面的话,似乎“/”和“/*”都会处理所有请求。
有什么区别?
最佳答案
仅包含/字符的字符串表示应用程序的“默认”servlet。在这种情况下,Servlet 路径是请求 URI 减去上下文路径,并且路径信息为空。 &
以 * 开头的字符串。前缀用作扩展映射。
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.
关于servlets - servlet url 匹配模式中/和/* 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9771816/