스프링부트에서 인터셉터 등록은 매우 간단하다.
먼저 인터셉터 역할을 할 클래스를 생성한다.
통상적으로 세션에서 로그인 정보가 등록되어 있는지 확인하기 때문에 세션을 가져오는 코드도 추가 하였다.
import java.util.HashMap;
import java.util.Optional;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
public class MyInterceptor extends HandlerInterceptorAdapter{
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
final HttpSession session = Optional.ofNullable(request).map( HttpServletRequest :: getSession ).orElse(null); //세션 가져오는 부분
/*
내용...
*/
return true;
}
}
다음으로 해당 인터셉터를 등록 할 설정용 클래스를 만든다.
만약 만들어져 있다면 기존 클래스를 활용해도 된다.
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.SessionCookieConfig;
import javax.servlet.SessionTrackingMode;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletContextInitializer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration //스프링부트 웹 설정
public class Configurations implements WebMvcConfigurer {
@Override //인터셉터 등록
public void addInterceptors(InterceptorRegistry registry) {
List<String> URL_PATTERNS = Arrays.asList("/배열로가능1", "/배열로가능2");
registry.addInterceptor(new MyInterceptor()) //만들어준 인터셉터
.addPathPatterns(URL_PATTERNS) //이런식으로 배열로도 가능하고,
.excludePathPatterns("/원하는패턴1") //1개1개씩 추가도 가능하다.
.excludePathPatterns("/원하는패턴2");
}
}
Configuration 에노테이션을 사용하고 WebMvcConfigurer를 상속받으면 스프링부트가 동작을 하면 아래 등록된 내용들을 웹 설정에 등록하여준다.
해당 클래스만 만들어주면 스프링부트가 알아서 내용을 조립하여 주기 때문에 따로 설정을 추가 할 필요가 없다.
addPathPatterns메소드를 활용해서 배열형태로 인터셉트 할 패턴을 넣어줄 수 있으며, excludePathPatterns 메소드를 활용해서 1개씩 인터셉트할 패턴을 넣어 줄 수 있다.
마찬가지로 registry 변수로 선언 된 InterceptorRegistry 클래스에 여러개의 인터셉터용 클래스를 추가 할 수도 있다.
반응형
'Spring framework > Spring boot' 카테고리의 다른 글
스프링부트 배너, Springboot banner, 스프링부트 웰컴 메시지 관리 (0) | 2019.12.02 |
---|---|
스프링부트 타일즈, Springboot tiles, Spring boot 타일즈 적용 (3) | 2019.12.02 |
STS git 추가, STS 깃 연동, STS 리눅스 git 서버 연동 (0) | 2019.11.12 |
Spring boot maven 빌드, Spring boot maven export (0) | 2019.11.11 |
Spring boot 웹 필터 적용 (0) | 2019.04.30 |
* 위 에니메이션은 Html의 캔버스(canvas)기반으로 동작하는 기능 입니다. Html 캔버스 튜토리얼 도 한번 살펴보세요~ :)
* 직접 만든 Html 캔버스 애니메이션 도 한번 살펴보세요~ :)
댓글