Шаблон URL-адреса сервлета, соответствующий URL-адресу, который заканчивается косой чертой (“/”)
-
19-08-2019 - |
Вопрос
Я хотел бы указать шаблон 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, заканчивающийся косой чертой, не разрешен.
Решение
Вполне возможно, что вы не сможете этого сделать, сопоставив в web.xml.
Что вы можете сделать, это сопоставить сервлет с /mypath /*, а затем проверить часть после /mypath / через request.getPathInto().Если это "/", запустите свой код.Если это не так, верните ошибку 404.
Другие советы
В NetBeans, если я перейду на вкладку Servlets в файле web.xml, IDE выдаст сообщение "Ошибка:Шаблоны URL-адресов не могут заканчиваться косой чертой (/)".Из Спецификация URL-адреса, он гласит,
httpurl = "http://" hostport [ "/" hpath [ "?" search ]]
hpath = hsegment *[ "/" hsegment ]
Так что да, URI с конечной косой чертой недопустим.