url-模式“/”与“/*”与 servlet 中的空白
url-pattern "/" vs "/*" vs blank in servlet
当我将“/”作为我的 url 模式时,我可以在地址栏中的斜线后键入任何我想要的内容并成功登陆到 servlet。
也就是说,两者
http://localhost:8080/firstServlet/
以及
http://localhost:8080/firstServlet/any_random_string
给了我同样的结果。
但是当我有 url-pattern 空白时,只有 http://localhost:8080/firstServlet/
有效。请解释原因。
有一些here and here类似的东西,但我不完全理解。
模式“/*”的行为也与“/”相同。
<url-pattern>/*</url-pattern>
servlet 上的 /* 覆盖所有其他 servlet,包括 servletcontainer 提供的所有 servlet,例如默认 servlet 和 JSP servlet。无论您发出什么请求,它最终都会出现在该 servlet 中。因此,这对于 servlet 来说是一个糟糕的 URL 模式。通常,您只想在过滤器上使用 /*
<url-pattern>/</url-pattern>
/ 不会覆盖任何其他 servlet。它只为所有与任何其他注册的 servlet 不匹配的请求替换 servletcontainer 的内置默认 servlet。这通常只在静态资源 (CSS/JS/image/etc) 和目录列表
上调用
对于空 url 模式
<url-pattern></url-pattern>
The empty string ("") is a special URL pattern that exactly maps to
the application's context root
当我将“/”作为我的 url 模式时,我可以在地址栏中的斜线后键入任何我想要的内容并成功登陆到 servlet。 也就是说,两者
http://localhost:8080/firstServlet/
以及
http://localhost:8080/firstServlet/any_random_string
给了我同样的结果。
但是当我有 url-pattern 空白时,只有 http://localhost:8080/firstServlet/
有效。请解释原因。
有一些here and here类似的东西,但我不完全理解。
模式“/*”的行为也与“/”相同。
<url-pattern>/*</url-pattern>
servlet 上的 /* 覆盖所有其他 servlet,包括 servletcontainer 提供的所有 servlet,例如默认 servlet 和 JSP servlet。无论您发出什么请求,它最终都会出现在该 servlet 中。因此,这对于 servlet 来说是一个糟糕的 URL 模式。通常,您只想在过滤器上使用 /*
<url-pattern>/</url-pattern>
/ 不会覆盖任何其他 servlet。它只为所有与任何其他注册的 servlet 不匹配的请求替换 servletcontainer 的内置默认 servlet。这通常只在静态资源 (CSS/JS/image/etc) 和目录列表
上调用对于空 url 模式
<url-pattern></url-pattern>
The empty string ("") is a special URL pattern that exactly maps to the application's context root