Как избежать совпадения путей, которые не имеют косой черты с отображениями сервлетов?
Я пытаюсь настроить сервлет, чтобы любые запросы /foo/*
пойду к моему Foo
сервлет, кроме запросов в виде /foo/bar/*
, которые идут к Bar
один. Тем не менее, я хочу /foo/bar
идти в Foo
сервлет, а не Bar
один. Есть ли способ сделать это только с помощью URL-шаблонов в web.xml?
Мои отображения:
<servlet-mapping>
<servlet-name>Bar</servlet-name>
<url-pattern>/foo/bar/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Foo</servlet-name>
<url-pattern>/foo/*</url-pattern>
</servlet-mapping>
Я попытался удалить звездочки и попробовать несколько других шаблонов, но единственный способ, которым я могу это сделать, - это иметь конкретное отображение для /foo/bar
хотя кажется, что должен быть лучший путь.
1 ответ
Если вы используете спецификацию сервлета v2.5 или выше, вы можете предоставить несколько элементов шаблона url для одного и того же отображения сервлета, например:
<servlet-mapping>
<servlet-name>Foo</servlet-name>
<url-pattern>/foo/*</url-pattern>
<url-pattern>/foo/bar</url-pattern>
</servlet-mapping>