【问题标题】:url-pattern "/" vs "/*" vs blank in servlet [duplicate]url-pattern "/" vs "/*" vs servlet中的空白[重复]
【发布时间】:2017-11-26 14:20:17
【问题描述】:

当我有“/”作为我的 url 模式时,我可以在地址栏中的斜杠之后输入任何我想要的内容并成功登陆到 servlet。 也就是说,两者都

http://localhost:8080/firstServlet/

还有

http://localhost:8080/firstServlet/any_random_string

给了我同样的结果。

但是当我将 url-pattern 设置为空白时,只有 http://localhost:8080/firstServlet/ 可以正常工作。请解释原因。 herehere 有一些类似的东西,但我不完全理解。

模式“/*”的行为也和“/”一样。

【问题讨论】:

标签: java servlets url-pattern


【解决方案1】:
<url-pattern>/*</url-pattern>

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

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

/ 不会覆盖任何其他 servlet。它仅替换 servletcontainer 的内置默认 servlet,用于与任何其他已注册 servlet 不匹配的所有请求。这通常只在静态资源(CSS/JS/image/etc)和目录列表上调用

对于空 url 模式

<url-pattern></url-pattern>

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

【讨论】:

  • 你的意思是如何在web.xml中输入?
  • 我很抱歉输入错误的评论。我不明白“/*”,我明白为什么“/”的行为与您的回答和here 一样。另外,空字符串呢?请将其包含在您的答案中。
  • 完成,我更新我的答案
猜你喜欢
  • 2012-11-24
  • 2014-05-16
  • 2011-09-27
  • 2016-12-01
  • 2011-08-13
  • 1970-01-01
  • 2012-01-16
  • 2012-03-21
  • 1970-01-01
相关资源
最近更新 更多