Interceptors (перехватчики ) в Spring MVC. Настройка, пример использования

Пример использования простого перехватчика для дополнительной обработки запроса в Spring MVC.

Обзор приложения Spring MVC + AngularJS + Bootstrap + HTML5
Используемые технологии и библиотеки
  • Spring MVC 4.2.4.Release
  • Maven 3.2.5
  • IntelliJ IDEA 15.0.2

1. Описание задачи

Рассмотреть работу перехватчиков в Spring MVC. Написать три метода: preHandle(), postHandle(), afterCompletion(), которые вызываются перед обработкой запроса актуальным классом, после этой обработки, а так же после окончания запроса соответственно.

2. Структура проекта

mvcInterceptorsStructure

Для этой статьи относительно прошлой части добавлены только два класса InterceptorController и SiteInterceptor. Первый класс — это обычный контроллер, который обрабатывает запрос в стандартном порядке. С помощью него мы увидим в какой момент относительно вызова метода контроллера будут вызываться методы перехватчика.

3. Конфигурация Spring MVC

Для включения в обработку запросов перехватчиков Spring необходимо минимум настроек.

mvc-config.xml:

Здесь приведена простенькая настройка одного перехватчика. Сначала задается общий тег <interceptors /> внутри которого необходимо перечислить все необходимые перехватчики. В нашем случае задан один перехватчик, а так же его маппинг (/interceptorCall/*). Так же указан класс перехватчик, который должен реагировать при перехвате запроса, соответствующему URI.  В комментариях в коде обращаю внимание, что для обработки всех запросов необходимо использовать две звездочки, а не одну.

Полный листинг mvc-config.xml показан под катом.

4. Web.xml, pom.xml

Никаких строк в конфигурационные файлы для этой части добавлено не было. Смотрите предыдущую статью или скачивайте исходные коды в конце статьи.

5. Java классы

Сначала был добавлен обычный контроллер Spring MVC, который срабатывает на запрос, соответствующий /interceptorCall/subLevel.

InterceptorController:

Теперь добавим непосредственно перехватчик, который будет выполнять определенный код до вызова метода interceptorCall() контроллера, после него, а так же по завершению запроса.

SiteInterceptor:

6. Запуск приложения

 mvcInterceptorRun

Вызов перехватчика происходит по нажатию кнопки внизу первой страницы приложения.

В результате в консоль будут выведены строки:

Как видите перед вызовом метода контроллера был вызван метод preHandle(). Затем был вызван метод контроллера и в последствии два метода перехватчика.

В дальнейшем будут добавлены еще классы-перехватчики, например при локализации i18n приложения.

Исходные коды

MVC_AngularJS_Html5 full project — полный проект Spring MVC + AngularJS + Bootstrap + HTML5.

10. Interceptors — код для этой части

Обзор приложения Spring MVC + AngularJS + Bootstrap + HTML5
Share Button
8
16045 Total Views 6 Views Today

Добавить комментарий