오늘은 장바구니 기능 구현에 대한 세번째 포스팅을 해보겠습니다 ╰(*°▽°*)╯3
지난 포스팅 중에서 관리자 페이지를 인터셉터 적용해 주었습니다.
장바구니 또한 로그인한 회원만 사용할 수 있도록 인터셉터 적용을 해주도록 하겠습니다.
구현 순서
1. servlet-context.xml
2. CartInterceptor.java
1. servlet-context.xml
servlet-context.xml에 "/cart/**"의 경로에 대해서만 적용할 수있도록 mapping을 해줍니다.
bean에 com.angel.interceptor 패키지의 CartInterceptor를 등록하고 해당 인터셉터는 "/cart" 경로를 타는 모든 요청이 CartInterceptor를 거치게 됩니다.
<interceptor>
<mapping path="/cart/**"/>
<beans:bean id="CartInterceptor" class="com.angel.interceptor.CartInterceptor"></beans:bean>
</interceptor>
2. CartInterceptor.java
com.angel.interceptor 패키지에 CartInterceptor.java 클래스를 생성해 줍니다.
CartInterceptor에 HandlerInterceptor를 상속 시켜줍니다.
public class CartInterceptor implements HandlerInterceptor{
}
👀❗여기서 잠깐❗👀 - HandlerInterceptor란?
HandlerInterceptor는 URL요청, 응답 시점을 가로채서 전/후 처리를 하는 역할을 합니다.
Interceptor 시점에 spring context와 Bean에 접근 할 수 있습니다.
우클릭 -> source -> Override/Implement Methods -> preHandle 클릭을 해주면 자동으로 오버라이딩을 해줍니다.
쨔잔 (∩^o^)⊃━☆
public class CartInterceptor implements HandlerInterceptor{
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
// TODO Auto-generated method stub
return HandlerInterceptor.super.preHandle(request, response, handler);
}
}
👀❗여기서 잠깐❗👀 - preHandle이란?
preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
preHandle은 컨트롤러에 진입하기 전에 실행이 됩니다.
반환 값이 true일 경우 컨트롤러로 진입하고, false일 경우 진입하지 않습니다.
아래의 코드를 추가해 줍니다.
해당 메서드는 MemberVO의 값이 null일 경우 main으로 리다이렉트 되고, 아닐 경우 true가 반환 됩니다.
회원이 로그인 되어있는 상태이면 정상적으로 요청이 Controller로 전송이 되고, 로그인 하지 않은 상태일 경우 main으로 리다이렉트 되게 해줍니다.
로그인 시, session "member" 라는 키로 로그인 사용자 정보 데이터를 저장해 두고, 그 값을 불러서 데이터의 유무를 판단해 줍니다.
public class CartInterceptor implements HandlerInterceptor{
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
HttpSession session = request.getSession();
MemberVO vo = (MemberVO)session.getAttribute("member");
if(vo == null) {
response.sendRedirect("/main");
return false;
} else {
return true;
}
}
}
이상입니당 (∩^o^)⊃━☆
참고 : Kim VamPa (tistory.com) 👍
'코딩 > Spring 쇼핑몰 프로젝트' 카테고리의 다른 글
Spring [쇼핑몰프로젝트] - 장바구니 구현[28] (0) | 2023.05.18 |
---|---|
Spring [쇼핑몰프로젝트] - 장바구니 구현[27] (1) | 2023.05.17 |
Spring [쇼핑몰프로젝트] - 장바구니 구현[25] (0) | 2023.05.16 |
Spring [쇼핑몰프로젝트] - 장바구니 구현[24] (0) | 2023.05.15 |
Spring [쇼핑몰프로젝트] - 인터셉터 적용[23] (0) | 2023.05.12 |