可能重复:
Servlet mapping / vs /*
servlet url映射中'/'和'/ *'的区别是什么?
因为我正在阅读春天的书,我找到了这些话:
接下来,我们必须指出将由哪些网址处理 DispatcherServlet的。找到映射到URL的DispatcherServlet很常见 模式,如 .htm,/ 或/ app。但是这些URL模式有一些 问题:
- * .htm模式意味着响应将始终采用HTML格式(正如我们将在第11章中学到的那样,不一定 案件)。
- 将其映射到/ *并不表示任何指定的响应类型,但表示DispatcherServlet将为所有请求提供服务。这样做 提供静态内容(如图像和样式表)比必要更困难。
- / app模式(或类似的东西)帮助我们区分Dispatcher-Servlet提供的内容与其他类型的内容。但是我们在URL中公开了一个实现细节(特别是/ app路径)。这导致了复杂的URL重写策略以隐藏/ app路径。
我更喜欢使用任何有缺陷的servlet映射方案,而不是使用任何有缺陷的servlet映射方案 像这样映射DispatcherServlet:
<servlet-mapping> <servlet-name>spitter</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
通过将DispatcherServlet映射到/,我说它是默认值 servlet并且它将负责处理所有请求, 包括静态内容请求。
根据上述说法,似乎“/”和“/ *”都会为所有请求提供服务。
有什么区别?
答案 0 :(得分:3)
仅包含/字符的字符串表示应用程序的“默认”servlet。在这种情况下,servlet路径是请求URI减去上下文路径,路径信息为null。 &安培;
以*开头的字符串。 prefix用作扩展映射。
模式/ *会强制一切通过你的Servlet。
模式/将使您的Servlet成为应用程序的默认Servlet, 意味着它会拾取每个没有其他精确模式的模式 匹配。