Java

spring interceptor

최종군 2024. 10. 15. 18:18

Interceptor : 

요청 url에 해당하는 controller가 실행되기 전 혹은 후에 

처리할 내용을 작성한다 

 

로그인 유/무를 판단, 회원의 권한 체크 등을 처리한다. 

 

preHandle :  

DispatcherServlet이 Controller를 호출하기 전 처리하는 영역이다 

- 즉 전처리를 한다

 

 

* DispatcherServlet : 

클라이언트의 요청을 받아서, 등록된 핸들러 매핑에 따라 

적절한 컨트롤로로 요청을 전달한다

 

어플리케이션 컨텍스트: DispatcherServlet은 Spring의 어플리케이션 컨텍스트를 생성하여, 다양한 빈을 관리합니다. 이를 통해 의존성 주입 및 여러 설정을 쉽게 처리할 수 있습니다.

 

인터셉터 및 필터 적용: 요청 처리 전후에 인터셉터를 적용하거나, 필터를 사용할 수 있습니다. 이를 통해 요청 흐름을 제어하고, 공통 로직을 처리할 수 있습니다.

 

 


postHandle : 

Controller 처리 후 DispatcherServlet으로 view[화면] 정보를

리턴하는 순간 처리하는 영역이다(후처리) 

 

@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
/*
 * * true 리턴 : 기존 방식대로 동작 -> 해당 컨트롤러 호출(실행)
 * * false 리턴 : 컨트롤러를 실행하지 않음
 */
// 로그인 전에 컨트롤러를 실행하지 않음! 마이페이지, 게시글 작성페이지...
HttpSession session = request.getSession();
if (session.getAttribute("loginUser") != null) {

return true;

 

} else {
session.setAttribute("alertMsg", "로그인 후 이용가능합니다.");

 

response.sendRedirect(request.getContextPath()); // 메인페이지로 url 재요청

return false;
}
}


인터셉터 등록 : 해당 코드를 실제로 적용 시키기 위해서는 Spring MVC 설정 파일 

 

servlet-context.xml에 인터셉터를 등록해야 된다. 

 

<interceptors>
<interceptor>
<mapping path="/member/myPage" />
<mapping path="/board/enrollForm" />
<beans:bean class="cohttp://m.kh.spring.common.interceptor.LoginInterceptor" id="loginInterceptor" />
</interceptor>
</interceptors>

 

'Java' 카테고리의 다른 글

spring aop란?  (0) 2024.10.18
Servlet Filter  (0) 2024.10.16
Java collections (ArrayList, HashSet) + HashMap  (0) 2024.07.15
자바 헷갈리는 내용 정리  (1) 2024.07.15
내가 잘 모르는 부분들 내용정리 JAVA  (0) 2024.07.15