当我使用“/”作为 url 模式时,我可以在地址栏中的斜杠后输入我想要的任何内容,并成功登陆到 servlet。 也就是说,两者
http://localhost:8080/firstServlet/
以及
http://localhost:8080/firstServlet/any_random_string
给了我同样的结果。
但是当我的 url-pattern 为空时,则只有 http://localhost:8080/firstServlet/
作品和一切。请解释原因。
有东西here和 here类似,但我不太明白。
模式“/*”的行为也与“/”相同。
最佳答案
<url-pattern>/*</url-pattern>
servlet 上的/* 会覆盖所有其他 servlet,包括 servlet 容器提供的所有 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
关于java - url-pattern "/"vs "/*"vs Servlet 中的空白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44714041/