Study/Spring

Servlet programming 처리 과정

going.yoon 2022. 6. 20. 12:33

 servlet 처리 과정

 (1) client 요청

 (2) dispatcher servlet 에서 해당 요청 처리 

 (3) client request에 대한 Handler mapping 

   (3.1) Request Mapping : RequestMappingHandlerAdpator가 수행

   (3.2) Interceptor 처리 

   (3.3) Argument Resolver 처리 : 실제 데이터를 Controller에 넘겨주는 인터페이스 

   (3.4) message Converter 처리 

 

filter vs interceptor vs AOP

- filter, interceptor : 서블릿 단위로 처리  vs  AOP : 메소드 앞에서 Proxy 형태로 처리

- filter, interceptor : 주소로 처리 대상 지정  vs  AOP : 주소, 파라미터, 애노테이션 등으로 처리 대상 지정

(1) filter :

 - dispatcher serlvet 이전에 처리 , 스프링과 무관한 자원에 대해 동작

 - web.xml 에 처리

 - XSS 방어에 대한 요청 처리 등으로 사용

- init(), doFilter() , destroy()

 

(2) interceptor : 

- dispatcher servlet - contoller 수행 이전에 동작

 - 스프링 컨텍스트 내부에서 컨트롤러에 관한 요청과 응답에 대해 동작

- prehandler() : 메서드 실행 이전

- posthandler() : 메서드 실행 이후 & 뷰 렌더링 이전 

- aftercompletion() : 뷰 렌더링 이후 처리 

 

(3) AOP : 

- 메소드의 전후 지점에서 동작

 (3.1) Advice : JointPoint, ProceedingJoinPoint 를 파라미터로 받아서 처리 

 (3.2) Handler Interceptor : HttpSerlvetRequest, HttpServletResponse 를 파라미터로 받아서 처리

 

*AOP의 포인트컷

@Before: 대상 메서드의 수행 전

@After: 대상 메서드의 수행 후

@After-returning: 대상 메서드의 정상적인 수행 후

@After-throwing: 예외발생 후

@Around: 대상 메서드의 수행 전/후