servlets - servlet url 匹配模式中/和/* 之间的区别

标签 servlets url-pattern

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/

相关文章:

java - 如何获取 Json 对象并将其存储在 Hashmap 中

servlets - Struts Hello World 示例

java - RESTful servlet URL - web.xml 中的 servlet 映射

java - 基本 Spring MVC 配置 : PageNotFound using InternalResourceViewResolver

django - 继续收到 Reverse for 'password_reset_confirm' not found 错误。 'password_reset_confirm' 不是有效的 View 函数或模式名称

java - 中间带有通配符的 Servlet URL 模式

java - 我可以在一个 HttpServletResponse 中附加多个附件吗

spring - Spring容器与Servlets的交互

java - 如何在多线程 servlet 应用程序中响应 HttpServletRequest(请求)

java - Servlet URL 模式以匹配以斜杠 ("/"结尾的 URL)