【发布时间】:2012-04-04 00:51:09
【问题描述】:
servlet url映射中'/'和'/*'有什么区别?
由于我正在阅读《春天在行动》这本书,我发现了这些话:
接下来我们必须指明哪些 URL 将由 DispatcherServlet。发现 DispatcherServlet 映射到 URL 是很常见的 .htm、/ 或 /app 等模式。但是这些 URL 模式有一些 问题:
- *.htm 模式意味着响应将始终采用 HTML 格式(正如我们将在第 11 章中学习的那样,不一定 案例)。
- 将其映射到 /* 并不意味着任何指定类型的响应,但表明 DispatcherServlet 将处理所有请求。这使得 提供静态内容(例如图像和样式表)比必要的难度更大。
- /app 模式(或类似模式)帮助我们将 Dispatcher-Servlet 提供的内容与其他类型的内容区分开来。但是随后我们的 URL 中公开了一个实现细节(特别是 /app 路径)。这会导致复杂的 URL 重写策略来隐藏 /app 路径。
比起使用任何有缺陷的 servlet 映射方案,我更喜欢 像这样映射 DispatcherServlet:
<servlet-mapping> <servlet-name>spitter</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>通过将 DispatcherServlet 映射到 /,我是说它是默认的 servlet,它将负责处理所有请求, 包括对静态内容的请求。
按照上面的说法,似乎'/'和'/*'都会服务所有的请求。
有什么区别?
【问题讨论】:
标签: servlets url-pattern