로그인 하지 않은 상태에서 비밀번호를 바꾸는 URL주소를 입력하면, 비밀번호 변경 폼이 출력될 것이다. 로그인하지 않았는데 변경 폼이 출력되는 것은 다소 이상하다. 그것보다는 로그인하지 않은 상태에서 비밀번호 변경 폼을 요청하면, 로그인 화면으로 이동시키는 것이 더 좋은 방법인 것 같다. 이를위해, HttpSession에 "authInfo"객체가 존재하는지 검사해서, 존재하지 않으면 로그인 경로로 리다이렉트하도록 구현한 코드를 컨트롤러 클래스에 추가한 것이다. 그런데 실제 웹 어플리케이션에서는 비밀번호 변경 기능외에 더 많은 기능이 로그인 여부를 확읺야 하는데, 각 기능을 구현한 컨트롤러 코드에 위와 같이 세션을 확인하는 코드를 삽입하는 것은 많은 중복을 발생시킨다. 이렇게 다수의 컨트롤러에 대해 동일한 기능을 적용해야 할 때 사용할 수 있는 것이 인터셉터이다. 스프링은 인터셉터를 지원하기 위해 HandlerInterceptor인터페이스를 제공한다. 1. HandlerInterceptor 인터페이스 사용하기 다음의 세 가지 시점에 공통기능을 넣을 수 있다. 컨트롤러(핸들러)실행 전 컨트롤러(핸들러)실행 후, 아직 뷰를 실행하기 전 뷰를 실행한 이후 다음의 세 개의 메소드를 정의하고 있다. boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)throws Exception; void postHandle(HttpServletRequest request, HttpServletResponse response,Object handler, ModelAndView modelAndView)throws Exception; void afterCompletion(HttpServletRequest request, HttpServletResponse response,Object handler,E...