【问题标题】:Servlet URL pattern to match a URL that ends with a slash ("/")Servlet URL 模式以匹配以斜杠 ("/") 结尾的 URL
【发布时间】:2010-10-02 08:04:09
【问题描述】:

我想指定一个 Servlet URL 模式来匹配以斜杠 ("/") 结尾且只有斜杠的 URL。

我明白这种模式

 /example/path/*

将匹配一个网址

 http://example.com/example/path/

并且这似乎有效。然而,同样的模式也将匹配

的 URL
 http://example.com/example/path/a/
    http://example.com/example/path/b/
    http://example.com/example/path/c/

我只是在寻找一个仅匹配 @987654321@ 而不匹配 @987654322@ 等的 URL 模式。

澄清:不允许使用以斜杠结尾的 URL 模式。

【问题讨论】:

  • 你试过不带尾星吗?例如 /example/
  • 是的,我已经尝试过了。 NetBeans 告诉我不允许以斜杠结尾的 URL 模式。

标签: java servlets web.xml url-pattern


【解决方案1】:

很可能你不能通过在 web.xml 中映射来做到这一点。

您可以做的是将 servlet 映射到 /mypath/*,然后通过 request.getPathInto() 检查 /mypath/ 之后的部分。如果是“/”,请运行您的代码。如果不是,则返回 404 错误。

【讨论】:

    【解决方案2】:

    在 NetBeans 中,如果我转到 web.xml 文件的 Servlets 选项卡,IDE 会报错:“错误:URL 模式不能以斜杠 (/) 结尾”。从URL spec,它读取,

    httpurl        = "http://" hostport [ "/" hpath [ "?" search ]]
    hpath          = hsegment *[ "/" hsegment ]
    

    所以是的,带有结尾斜杠的 URI 是无效的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多