Как перехватить все запросы для всех контроллеров без HandlerInterceptor в Spring? - PullRequest
0 голосов
/ 04 января 2012

У меня есть требование перехватить все запросы весной 2.5. Я не хочу использовать HandlerInterceptor для перехвата запроса, потому что требуется настроить его для каждого компонента SimpleUrlHandlerMapping в контекстных файлах. Есть ли другой способ перехватить весь запрос без использования HandlerInterceptor?

1 Ответ

0 голосов
/ 04 января 2012

Вы можете реализовать фильтр и отобразить его на DispatcherServlet в web.xml. Тогда вы сможете перехватить все запросы, сделанные Spring MVC.

Короче говоря:

  1. Создание реализации javax.servlet.Filter
  2. Добавить фильтр в web.xml

    <filter>
     <filter-name>MyFilter</filter-name>
     <filter-class>mypackage.MyFilter</filter-class>
    </filter>
    

    и затем сопоставьте его с DispatcherServlet (имя сервлета должно быть таким же, как определено для сервлета Spring Dispatcher.

    <filter-mapping>
        <filter-name>MyFilter</filter-name>
        <servlet-name>DispatcherServlet</servlet-name>
    </filter-mapping>
    

Если вам нужен доступ к Spring ApplicationContext в фильтре, используйте статический метод

   org.springframework.web.context.ContextLoader.getCurrentWebApplicationContext()
...