匹配以斜杠("/")结尾的URL的Servlet URL模式

8
我想指定一个Servlet URL模式来匹配以斜杠(“/”)结尾且仅为斜杠的URL。
我知道模式:
/example/path/*
将匹配以下URL:
http://example.com/example/path/
看起来这样可以工作。但是,同样的模式也会匹配以下URL:
http://example.com/example/path/a/ http://example.com/example/path/b/ http://example.com/example/path/c/
我只是想寻找一个URL模式,它只匹配http://example.com/example/path/而不匹配其他的,如http://example.com/example/path/a/等。
澄清:不允许以斜杠结尾的URL模式。

你试过没有尾部星号吗?例如 /example/。 - mP.
是的,我已经尝试过了。NetBeans告诉我以斜杠结尾的URL模式是不允许的。 - Jon Cram
2个回答

8
很可能你无法通过在web.xml中进行映射来实现这一点。你可以将servlet映射到/mypath/*,然后通过request.getPathInto()检查/mypath/后面的部分。如果是“/”,则运行你的代码。如果不是,则返回404错误。

1
在NetBeans中,如果我进入web.xml文件的Servlets选项卡,IDE会报错:"Error: URL patterns cannot end with slash (/)"。根据URL spec,它的解释是:
httpurl        = "http://" hostport [ "/" hpath [ "?" search ]]
hpath          = hsegment *[ "/" hsegment ]

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接