예전에 학원에서 배웠던 내용들 다시 정리 (by 인프런 강의)

 

리다이렉트(redirect):

컨트롤러에서 String을 리턴할 때 view를 리턴하는 것이 아닌, redirect:/로 리턴하면 / 경로로 넘어감 (다시 컨트롤러를 탄다)

return "redirect:/";

 

ModelAndView를 리턴한다면,

mav.setViewName("redirect:/");

 

인터셉터(interceptor)

- 경로를 훔치는 의미. 리다이렉트를 사용해야하는 경우가 많은 경우 활용도 가능하다.

예를들어, 로그인이 안되면 이동할 수 없는 페이지들이 있는데, 이 페이지들을 가기전에 인터셉트를 먼저 타고 로그인여부 확인 후에 컨트롤러를 가게 할 수 있다.

 

전체 flow (참고: 인프런 강의):

여기에서 preHandle()이 가장 많이 쓰인다. 컨트롤러가 작동하기 전이기 때문.

 

사용방법:

1) 인터셉터를 구현할 Class를 하나 생성하고, HandlerInterceptorAdapter(스프링에서 제공)를 상속받는다.

 

예시)

public class MemberLoginInterceptor extends HandlerInterceptorAdapter

구현 예시 (출처: 인프런 스프링 강의)

2) servlet-context.xml에서 인터셉트 할 것이라고 설정해준다.

설정 예시 (출처: 인프런 스프링 강의)

방법1은 인터셉터할 경로를 지정해주는 거고, 방법2는 인터셉터를 제외할 경로를 지정해주는 방법이다.

어떤 Class가 인터셉터인지 beans로 지정해줘야한다.

 

+ Recent posts