Как избежать совпадения путей, которые не имеют косой черты с отображениями сервлетов?

Я пытаюсь настроить сервлет, чтобы любые запросы /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>
Другие вопросы по тегам