본문 바로가기
Develop/Spring

[Spring] Interceptor 를 이용한 페이지 전환 구현 (1)

by 코딩의성지 2019. 10. 27.

지난 번에 내가 redirect를 이용해서 페이지를 전환하는 걸 포스팅한 적이 있다.

( https://devkingdom.tistory.com/10 - Redirect를 이용하여 특정 페이지로 전환하기 (1))

( https://devkingdom.tistory.com/13 - Redirect를 이용하여 특정 페이지로 전환하기 (2))

 

 

 

그런데 말입니다....

 

<출처 : SBS>

만약에 여러분이 아주 정말 큰 웹프로젝트를 만든다고 생각해보자. 특정 페이지로 전환을 하기 위해 redirect를 쓴다면... 페이지 전환할때마다 다 해줘야하는 번거로움이 생긴다. 

 

Interceptor를 이용하면 그러지 않아도 된다 !  Interceptor는 특정 URI로 Request할때 Controller로 가는 Request를 가로채서 처리해준다.

 

만약 redirect를 사용할 경우가 많다면 HandlerInterceptor를 이용해보자.

 

HandlerInterceptor를 implements 하면 preHandle(), postHandler(), afterCompletion() 이렇게 세가지 메서드를 override할 수 있다.

 

아직 Interceptor가 무슨 말인지 잘모르겠지? 아래 그림을 보자.

 

<Interceptor 처리과정>

preHandle()은 Controller 작업 전에 ,

postHandle()은 Controller 작업 후에 ,

afterCompletion()은 Controller 뿐만 아니라 View 까지 작업이 끝나면 !! 돌아가는 메서드이다.

 

언제 호출되는지 정도는 알아야 우리가 써먹어 볼수 있지 않겠는가!! ㅎㅎ

 

이 HandlerInterceptor를 구현할 수 있게 Spring에서 HandlerInterceptorAdapter 을 지원해 준다. 

우리는 이 추상클래서를 상속받아서 쓰기만 하면된다.

 

여기서 우리는 preHandle() 이라는 놈을 사용해서 redirect를 대체하여 사용할 수 있다. preHandle() 메서드는 Handler가  Controller의 메서드를 실행하기전에 실행된다고 했는데, 이때 만약 원하지 않는 경로로 Client가 request를 했을 경우에 response.sendRedirect를 이용해서 redirect 경로를 보내고 false를 리턴한다. 정상적인 경로라면 true를 return 한다.

 

이렇게 말로만 적어서는 이해가 어려울 것 같다. 다음 포스팅에 바로 예제를 구현하는 걸 작성해보도록 하겠다.

 

일단 설명은 여기까지만하고 글을 마무리 하겠다.

반응형

댓글