회사 Return server에서 interceptor를 처음 보았다. 지금까지 해왔던 프로젝트에서는 interceptor를 사용하지 않았으나 이번에 알게 되어 간단히 요약해 보려 한다.
인터셉터(Interceptor)란?

Interceptor는 말그대로 Controller에 들어오는 요청과 응답을 가로채는 역할로 DispatcherServlet이 실행된 뒤 호출된다. DispatcherServlet은 아래에서 설명하겠다.
먼저, Interceptor는 HandlerInterceptor 인터페이스를 반드시 implements 해야한다.
HandlerInterceptor안에 있는 메서드인 preHandle()은 Controller보다 먼저 실행되는 메서드이며, postHandle()은 Controller가 수행되고 화면에 보여지기 직전 실행되는 메서드이므로 원하는 사이클에 코드를 작성하면 된다.
용도는 보통 세션에 로그인 정보 여부와 권한 여부 등을 체크하는 역할을 수행하는데 사용한다.
그럼 Dispatcher-Servlet이란?

Servlet Container에서 HTTP프로토콜을 통해 들어오는 모든 요청을 프레젠테이션 계층의 제일 앞에서 둬 중앙집중식으로 처리해주는 프론트 컨트롤러이다.
이 말은 즉, 간단히 클라이언트가 URL을 호출을 하면 Controller 오기 전에 무조건 먼저 거치듯 클라이언트와 서버 사이에 있는 녀석이다.
이는 해당 어플리케이션으로 들어오는 모든 요청을 핸들링해주며 일일이 url을 등록해줘야 했던 방식을 쉽게 만들어 주는 역할을 한다.
단점이 있다면 모든 요청을 처리하다 보니 HTML, 이미지도 전부 Controller로 넘겨버리는데 jsp 안에 있는 js와 css파일에 대한 요청 또한 Dispatch Servlet이 가로채기 때문에 자원을 가져오지 못하는 경우가 생길 수 있다.
이를 해결하기 위한 방법으로는 클라이언트 요청을 분리하는 방법과 모든 요청을 컨트롤러에 등록하는 방법이다.
spring은 <mvc:resources/> 를 사용하여 Dispatch servlet에서 해당 요청에 대한 컨트롤러를 찾을 수 없느 경우 설정된 경로에서 탐색하여 자원 찾는다. 이렇게 영역을 분리하면 효율적인 resource 관리 뿐 아니라 확장을 용이하게 할 수 있는 장점이 있다.
오늘 성장에 도움을 주신 개발자분
출처 : https://mangkyu.tistory.com/18
출처 : https://developer-jjun.tistory.com/16
오늘도 감사합니다.
'개발 > Spring' 카테고리의 다른 글
[MongoDB] MongoInterruptedException 해결하기 (0) | 2024.06.02 |
---|---|
RecoverableDataAccessException 해결한 경험 (1) | 2024.04.28 |
[Spring Security] SecurityContextHolder와 Authentication 알아보기 (0) | 2023.04.19 |
Spring boot에 Swagger 적용하기 (0) | 2023.03.31 |
Spring security + JWT 구현 방식 (0) | 2023.03.29 |
댓글