Шаблон URL сервлета для соответствия URL, заканчивающемуся косой чертой ("/") - PullRequest
8 голосов
/ 20 января 2009

Я хотел бы указать шаблон 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, который будет соответствовать <a href="http://example.com/example/path/" rel="nofollow noreferrer">http://example.com/example/path/</a> только без соответствия <a href="http://example.com/example/path/a/" rel="nofollow noreferrer">http://example.com/example/path/a/</a> и т. Д.

Уточнение: недопустимый шаблон URL, заканчивающийся косой чертой.

Ответы [ 2 ]

8 голосов
/ 20 января 2009

Вполне возможно, что вы не можете сделать это путем сопоставления в web.xml.

Что вы можете сделать, это сопоставить сервлет с / mypath / *, а затем проверить часть после / mypath / через request.getPathInto (). Если это «/», запустите ваш код. Если это не так, верните ошибку 404.

1 голос
/ 20 августа 2015

В NetBeans, если я перейду на вкладку Servlets в файле web.xml, среда IDE будет выдавать сообщение «Ошибка: шаблоны URL не могут заканчиваться косой чертой (/)». Из спецификации URL читается:

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

Так что да, URI с конечной косой чертой недействителен.

...