Spring MVC
Last updated
Last updated
서블릿이 제공하는 기술
Dispatcher Servlet이 실행되기 전 호출된다.
요청을 실질적으로 처리하기 전 처리해야 할 부분을 담당한다.
적절하지 않은 요청이 들어올 경우 HTTP 요청이 서블릿까지 도달하지 못하게 하는 역할을 한다.
체인으로 구성되며, 중간에 필터를 자유롭게 추가/제거 가능
Authentication Filters
Logging and Auditing Filters
Image conversion Filters
Data compression Filters
Encryption Filters
…
웹 관련 공통사항을 처리하기 때문에 파라미터로 ServletRequest와 ServletResponse 객체가 제공된다.
스프링 프레임워크는 확장성을 위해 ServletRequest와 ServletResponse 객체로 제공했지만 대부분 HttpServletRequest와 HttpServletResponse를 사용하기 때문에 다운 캐스팅하여 사용하면 됨
메서드
init() 메서드: 필터 초기화 메서드이며 서블릿 컨테이너가 생성될 때 호출
doFilter() 메서드: 고객의 요청이 올 때마다 해당 메서드가 호출되며 메인 로직을 이 메서드에 구현하면 됨
destory() 메서드: 필터 종료 메서드이며 서블릿 컨테이너가 소멸될 때 호출
Dispatcher → 배치 담당자 라는 뜻
들어오는 모든 Request를 우선적으로 받아 처리해주는 서블릿
HandlerMapping에게 Request에 대해 매핑할 Controller 검색을 요청 후 Controller 정보를 반환받는다.
실행할 Controller 정보를 HandlerAdapter에 넘기면, 컨트롤러가 실행된다.
Spring MVC가 제공하는 기술
컨트롤러에 들어오는 요청 HttpRequest와 컨트롤러가 응답하는 HttpResponse를 가로챈다.
Dispatcher Servlet이 실행된 후 호출되므로 Request가 Controller에 매핑되기 전 앞단에서 부가적인 로직을 수행할 수 있다.
웹 관련 공통 관심 사항을 처리한다는 점에서는 필터와 비슷
체인으로 구성되며 중간에 인터셉터를 자유롭게 추가/제거 가능
주로 세션, 쿠키, 권한 인증 로직에 많이 사용됨
preHandle
컨트롤러 호출 전 실행됨
파라미터 handler
는 컨트롤러 오브젝트이다.
리턴값이 true
이면 다음 인터셉터로 진행되고, false
일 경우 다음 인터셉터들을 실행되지 못한다.
postHandle
컨트롤러 호출 후 실행됨
ModelAndView
가 제공되므로 작업결과를 참조하거나 조작할 수 있다.
afterCompletion
모든 작업(뷰 렌더링)이 완료된 후 실행됨
try catch finally 절에서 finally처럼 무조건 호출됨
출처
https://jaimemin.tistory.com/1887
https://joont92.github.io/spring/HandlerMapping-HandlerAdapter-HandlerInterceptor/