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

时间:2012-03-19 14:17:23

标签: servlets url-pattern

  

可能重复:
  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并且它将负责处理所有请求,   包括静态内容请求。

根据上述说法,似乎“/”和“/ *”都会为所有请求提供服务。

有什么区别?

1 个答案:

答案 0 :(得分:3)

仅包含/字符的字符串表示应用程序的“默认”servlet。在这种情况下,servlet路径是请求URI减去上下文路径,路径信息为null。 &安培;

以*开头的字符串。 prefix用作扩展映射。

  

模式/ *会强制一切通过你的Servlet。

     

模式/将使您的Servlet成为应用程序的默认Servlet,   意味着它会拾取每个没有其他精确模式的模式   匹配。