可能重复:
Servlet 映射 / vs /*
servlet url映射中的'/'和'/*'有什么区别?
由于我正在阅读《春天在行动》这本书,我发现了这些话:
接下来,我们必须指明 DispatcherServlet 将处理哪些 URL。发现 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,它将负责处理所有请求,包括对静态内容的请求。
根据上面的话,似乎'/'和'/*'都将服务所有请求。
有什么区别?