공부/Spring 복습

리다이렉트, 인터셉트

ChoiDooSic 2021. 9. 1. 10:45

컨트롤러에서 뷰를 분기하는 방법과 컨트롤러 실행 전/후에 특정 작업을 가능하게 하는 방법에 대해서 학습한다.

 

#리다이렉트


(지금의 페이지에서 특정 페이지로 전환하는 기능)
예를들어 클라이언트가 회원정보 수정 요청을하고
회원인증을 거쳐 회원정보 수정 페이지로 유도되야하는데 회원인증이 안되어있다면
메인 페이지(특정 페이지)로 유도하는 기능이다.

#인터셉트


리다이렉트가 빈번하게 발생할 경우 굉장히 번거롭기때문에
아예 컨트롤러가 시작 전후로 인터셉트하여 먼저 검증한다.
DispatcherServlet이후 HandlerInterceptor(인터페이스)가 가로첸다


HandlerInterceptor는 3개의 메소드로 구현될수있고
preHandle(), postHandle(), afterCompletion() 이 있다.
preHandle() 컨트롤러가 작동하기 전단계
postHandle() 컨트롤러 작업후
afterCompletion() 컨트롤러와 뷰가 다 작업한 후에 작업


스프링 설정파일에서 <interceptors> 태그로 관리가 가능하다.
<mapping path="/member/**"/> 이 부분은 member의 하위 경로로 요청되는 모든 부분을
지정할 수 있다.
<exclude-mapping path="/member/joinForm"/> 를 사용하면 제외하고 싶은 경로는 제외가 가능하다.