Перехват всего запроса одного WEBAPP с использованием Java EE

У меня есть веб-приложение, развернутое в 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-страниц в приложении, чтобы везде ставить фильтры.


person Shamik    schedule 14.01.2010    source источник


Ответы (1)


Используйте 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>
person Bozho    schedule 14.01.2010
comment
Да вы правы. Меня смутило использование фильтра. Это решило мою проблему. - person Shamik; 15.01.2010