Перехват всех запросов одного WEBAPP с использованием Java EE - PullRequest
3 голосов
/ 15 января 2010

У меня есть веб-приложение, развернутое в Tomcat. Я хотел бы перехватить все входящие запросы - получить или опубликовать и выполнить какое-то задание. Я хочу перехватывать вызовы из сервлета, страниц JSP и т. Д. Поэтому я создал один файл web.xml, который выглядит примерно так -

  <servlet>
    <description></description>
    <display-name>Transformer</display-name>
    <servlet-name>Transformer</servlet-name>
    <servlet-class>com.test.Transformer</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>Transformer</servlet-name>
    <url-pattern>/*</url-pattern>
  </servlet-mapping>

Как мы видим, любой запрос поступит к сервлету контроллера под названием Transformer. Теперь этот сервлет обычно пытается преобразовать один запрос из A в B. Проблема, с которой я сталкиваюсь, заключается в том, что я попал в цикл. Я просто хочу преобразовать запрос для url /test.jsp в /abc/test.jsp, но второй /abc/test.jsp также работает с сервлетом Transformer, и в результате он работает не так, как задумано. Я думаю, что могу использовать фильтр, но у меня слишком много сервлетов и страниц JSP в приложении, чтобы поместить фильтр повсюду.

1 Ответ

8 голосов
/ 15 января 2010

Используйте javax.servlet.Filter для перехвата. Вы можете сопоставить его с /*, и он будет перехватывать все.

<filter>
    <filter-name>YourFilterName</filter-name>
    <filter-class>com.package.YourFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>YourFilterName</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...