본문 바로가기

팀프로젝트 - TailsRoute

history, location, 인터셉터

history.back(), location.replace()

  • 새로고침이 필요할 시 location, 필요없다면 history

history.back()

history.back을 사용했을 때 로딩 되는 페이지에서 해당 url로 인한 진입인지, back으로 돌아온 페이지 인지 감지하여 함수를 동작시킬 수 있다.

history.go(-4) -> 뒤로가기 4번
history.go(-1) == history.back()

location.replace()

현재 페이지에서 새로운 페이지로 덮어 쓰는 것이기 때문에 이전 페이지로 이동이 불가능하다.


스프링 인터셉터(Interceptor)

  • 스프링 interceptor란 요청을 가로채서 개발자가 원하는 동작을 추가하는 역할을 한다.
  • 인터셉터를 사용하는 이유는 공통 로그 처리, 권한체크에 사용될 수 있다. interceptor를 이용하여 요청을 받아 들이 전, 세션에서 로그인한 사용자가 있는지 확인해보고 없다면 로그인 페이지로 redirect 시킬 수 있다.

preHandler()

Controller가 호출되기 전에 실행되며, 컨트롤러가 실행 이전 처리해야 할 작업이 있는 경우 혹은 요청정보를 가공하거나 추가하는 경우 사용한다.

  • return 값은 boolean으로 해당 값이 false이면 컨트롤러 또는 다음 HandlerInterceptor를 실행하지 않는다.

postHandler()

Controller가 호출 된 이후이지만, View가 생성되기 전에 실행되며, ModelAndView 객체를 인자로 받아 Controller에서 View 정보를 전달하기 위해 작업한 Model 객체의 정보를 참조하거나 조작할 수 있다.

  • preHandle()에서 리턴값이 false경우 실행되지 않는다.

afterCompletion()

View의 모든 작업이 완료된 후에 실행되며, preHandler()에서 리턴값이 false인 경우 실행되지 않는다.