Co to jest HandlerInterceptor w wiosennym MVC?

W tym poście opiszę Spring MVC HandlerInterceptor, jego użycie i zachowanie.

Przegląd

Zanim przejdziemy do HandlerInterceptor , porozmawiajmy trochę o HandlerMapping . Jest on używany do mapowania metody na konkretny adres URL. Aby DispatcherServlet mógł go wywołać podczas przetwarzania żądania. Ponadto DispatcherServlet używa modułu HandlerAdapter do wywołania metody.

Teraz mamy szybki pomysł na kontekst i to jest moment , w którym do gry wchodzi HandlerInterceptor . Ma trzy etapy, takie jak akcje przed obsługą, po obsłudze i po zakończeniu (obiekt widoku renderowania).

W projektach możemy wykorzystać ten interceptor do walidacji żądań, uwierzytelniania żądań, unikania powtarzającego się kodu itp…

Zapoznaj się ze schematem, aby lepiej zrozumieć proces.

Interceptor współpracuje ze sprężyną MVC

Zależności

Zależność wiosenna
Zależność Springboot

Przechwytujący uchwyt sprężynowy

Zanim przejdziemy do wdrożenia, przyjrzyjmy się treści. Jest to interfejs i zawiera 4 główne metody. Korzystając z tych metod, możemy
wykonać wszelkiego rodzaju przetwarzanie wstępne i końcowe.

prehandle(): Wywoływana przed wykonaniem właściwej procedury obsługi, ale widok nie został jeszcze wygenerowany.
postHandle() : Wywoływana po wykonaniu procedury obsługi.
afterCompletion() : Wywoływana po zakończeniu całego żądania i wygenerowaniu widoku.
afterConcurrentHandlingStarted() : Rozpoczęło wykonywanie asynchroniczne w celu sprawdzenia typu i/lub instancji. Jest to bardzo rzadkie w praktycznych scenariuszach.

Tak będzie wyglądać implementacja preHandle():

Przechwytuje żądanie przed osiągnięciem metody obsługi. Ta metoda zwraca wartość logiczną.

Jeśli prawda, zezwala na kontynuację żądania w łańcuchu wykonywania dla innego przechwytywacza do procesora dla samej procedury obsługi.

Jeśli ma wartość fałsz, Spring zakłada, że ​​interceptor przetworzył żądanie, a nasz kontroler nigdy nie przetworzy tego żądania. Przerywa wszelkie przyszłe wykonanie w łańcuchu wykonywania, w tym rzeczywistą procedurę obsługi.

Tak będzie wyglądać implementacja postHandle():

Ta metoda umieszczona pomiędzy HandlerAdapter i przed DispatcherServlet renderuje widok, umożliwiając interceptorowi wstrzyknięcie dodatkowych atrybutów do obiektów ModelAndView. Ta metoda zostanie wywołana na każdym przechwytywaczu w łańcuchu w odwrotnej kolejności, więc pierwszy przechwytywacz będzie wywołany jako ostatni.

Tak będzie wyglądać implementacja afterCompletion():

Zostanie to wywołane po zakończeniu przetwarzania żądania. Zwykle ta metoda może być używana do wykonywania pewnego rodzaju czyszczenia zasobów.
Ta metoda zostanie wywołana na każdym przechwytywaczu w łańcuchu w odwrotnej kolejności, więc pierwszy przechwytywacz będzie wywołany jako ostatni.

Realizacja

Wdrożenie można przeprowadzić na dwa sposoby.
1) Implementacja interfejsu HandlerInterceptor .
2) Rozszerzanie klasy abstrakcyjnej HandlerInterceptorAdapter .

Użyję drugiego podejścia. Ale pod koniec dnia wywoła HandlerInterceptor. Zobacz diagram.

Konfiguracja

Istnieją 2 różne sposoby konfiguracji przechwytywacza.

W przypadku projektu Springboot musimy nadpisać metodę addInterceptors() wewnątrz klasy SpringMVCConfig, która implementuje WebMvcConfigurer . Ta klasa SpringMVCConfig jest naszą niestandardową implementacją.

Konfiguracja klasy wiosennej

W przypadku Spring możemy użyć konfiguracji XML w mvc-dispatcher-servlet.xml , jak podano poniżej. Korzystając z tego możemy zdefiniować, które żądanie kontrolera powinno przejść przez przechwytywacz za pomocą znaczników <mvc:mapping> i <mvc:exclude-mapping> .

Konfiguracja XML
  1. Jeśli chcesz skonfigurować klasę kontrolera bez żadnych ograniczeń, możesz użyć konfiguracji No:1 .
  2. Jeśli chcesz skonfigurować konkretny identyfikator URI z interceptorem, możesz użyć konfiguracji No:2 .
  3. Jeśli chcesz uwzględnić lub wykluczyć określony URIS z przechwytywacza, możesz użyć konfiguracji nr:3,4 .
  4. No:5 pokazuje nam, w jaki sposób możemy skonfigurować naszą klasę Interceptor w pliku XML.

Uwierzytelnianie podstawowe dla aplikacji Springboot REST API z HandlerInterceptor

Uwierzytelnianie JWT dla aplikacji Springboot REST API z HandlerInterceptor

Mam nadzieję, że będzie to dla ciebie pomocne i zostaw komentarz lub wiadomość, jeśli masz jakiekolwiek wątpliwości.

Suggested posts

Skonfiguruj i używaj Apache Kafka z Spring Boot

Kafka z wiosennym butem

Skonfiguruj i używaj Apache Kafka z Spring Boot

Wprowadzenie Apache Kafka to rozproszona platforma przesyłania strumieniowego typu open source, która obsługuje przesyłanie strumieniowe danych w czasie rzeczywistym na dużą skalę, o dużej przepustowości i odporności na błędy. System opiera się na modelu publikowania-subskrybowania, w którym producenci publikują wiadomości w tematach, a konsumenci subskrybują te tematy, aby konsumować wiadomości.

Nasze wiosenne znaki

Nasze wiosenne znaki

Dla nas, tutaj, w południowym Ontario, a konkretnie w naszym własnym mikroklimacie, jest to losowanie między przybyciem niektórych ptaków a pojawieniem się jednej z dwóch kwitnących wiosną roślin. Miodówka i Bloodroot.

Related posts

Pierwsza książka dla dzieci o tym, jak się naćpać

Pierwsza książka dla dzieci o tym, jak się naćpać

(Ostrzeżenie - to jest satyra, która ma być radośnie wywrotowa - zdecydowanie nie dla dzieci) Widziałeś, jak twoja mama i tata chowają się w kuchni i palą śmierdzące papierosy. Mówią ci.

Nauka w tygodniu pracy ma większe znaczenie niż myślisz

Nauka w tygodniu pracy ma większe znaczenie niż myślisz

Często mamy trudności z wdrożeniem tego, co wiemy, że jest dla nas dobre. Od mówienia drugiej osobie, że ją kochamy, po pamiętanie, by mówić jak pirat, zawsze znajdą się tacy, którzy twierdzą, że dzień, tydzień lub miesiąc wydarzeń nie jest potrzebny, ponieważ już to robią.

NIEOGRANICZONE ŻYCIE

Kiedy dorastasz, zwykle słyszysz, że świat jest taki, jaki jest, a twoje życie polega na tym, by żyć swoim życiem w świecie, nigdy nie ryzykując życia, po prostu podążaj wyznaczoną ścieżką i umrzyj w końcu i staraj się nie za bardzo walnij w ściany. Ale to bardzo ograniczone życie.

Tworzenie bezpiecznego środowiska pracy

Tworzenie bezpiecznego środowiska pracy

„Będzie mnie chronił, gdy będę w niebezpieczeństwie. Ukryje mnie w swoim namiocie.