当我将“/”作为我的url-pattern时,我可以在地址栏中的斜杠后输入我想要的内容并成功登陆到servlet。 就是这两个
http://localhost:8080/firstServlet/
以及
http://localhost:8080/firstServlet/any_random_string
给了我相同的结果。
但是当我将url-pattern留空时,只有http://localhost:8080/firstServlet/
可以正常工作。请解释原因。
有一些here和here相似,但我不完全理解。
模式“/ *”也表现得像“/".
答案 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模式 应用程序的上下文根