url-pattern“/”vs“/ *”vs servlet中的空白

时间:2017-06-23 05:57:29

标签: java servlets url-pattern

当我将“/”作为我的url-pattern时,我可以在地址栏中的斜杠后输入我想要的内容并成功登陆到servlet。 就是这两个

http://localhost:8080/firstServlet/

以及

http://localhost:8080/firstServlet/any_random_string

给了我相同的结果。

但是当我将url-pattern留空时,只有http://localhost:8080/firstServlet/可以正常工作。请解释原因。  有一些herehere相似,但我不完全理解。

模式“/ *”也表现得像“/".

1 个答案:

答案 0 :(得分:1)

<url-pattern>/*</url-pattern>

servlet上的/ *会覆盖所有其他servlet,包括servletcontainer提供的所有servlet,例如缺省servlet和JSP servlet。无论你发出什么样的请求,它都会在那个servlet中结束。因此,这对于servlet来说是一个糟糕的URL模式。通常,您只想在仅过滤器上使用/ *

<url-pattern>/</url-pattern>

/不会覆盖任何其他servlet。它仅替换所有与任何其他已注册servlet不匹配的请求的servletcontainer的内置缺省servlet。这通常只在静态资源(CSS / JS /图像/等)和目录列表

上调用

对于空网址格式

<url-pattern></url-pattern>
  

空字符串(“”)是一个精确映射到的特殊URL模式   应用程序的上下文根