HanlderInterceptor란??
- Spring Boot에서 지원하는 FrameWork로 해당 조건에 만족하는 상황에서 응답시점을 가로채서 전/후 처리를 하는 역할
Interceptor생성
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
public class MyInterceptor implements HandlerInterceptor {
private Logger logger = LoggerFactory.getLogger(this.getClass());
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
System.out.println("preHandle 작동");
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
System.out.println("postHandle 작동");
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object object, Exception ex) throws Exception {
System.out.println("afterCompletion 작동");
}
}
|
cs |
preHandle
(HttpServletRequest request, HttpServletResponse response, Object handler)
- 컨트롤러에 진입하기 전에 실행.
- return값이 true이면 컨트롤러 진입 false일경우 진입하지 않음
- Object객체에는 진입하려는 컨트롤러의 클래스 객체가 담겨 있음
postHandle
(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView)
- 컨트롤러 진입 후 View가 랜더링 되기 전에 수행
afterCompletion
(HttpServletRequest request, HttpServletResponse response, Object object, Exception ex)
- 컨트롤러 진입 후 View가 랜더링 된 후에 수행
afterConcurrentHandlingStarted
(HttpServletRequest request, HttpServletResponse response, Object h)
- 비동기 요청시 postHandle과 afterCompletion이 수행되지 않고 수행
Interceptor 등록하기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new MyInterceptor())
.addPathPatterns("/*") // 해당 경로에 접근하기 전에 인터셉터가 가로챈다.
.excludePathPatterns("/boards"); // 해당 경로는 인터셉터가 가로채지 않는다.
}
}
|
cs |
728x90
반응형
'FrameWorks > Spring & Boot' 카테고리의 다른 글
[SpringBoot] RequestContextHolder (0) | 2023.04.13 |
---|---|
[Spring] Model과 ModelMap의 차이점 (0) | 2023.04.10 |
Spring Boot에서 email인증하기 (0) | 2023.02.07 |
Spring Boot에서 외부 파일 경로 사용하기!! (0) | 2023.02.02 |
servlet-context와 root-context의 차이점 (0) | 2022.12.11 |
댓글