Kim VamPa

[Spring][쇼핑몰 프로젝트][36] 장바구니 기능(인터셉터 적용) - 3 본문

스프링 프레임워크/쇼핑몰 프로젝트

[Spring][쇼핑몰 프로젝트][36] 장바구니 기능(인터셉터 적용) - 3

Kim VamPa 2021. 11. 17. 12:53
728x90
반응형
프로젝트 Github : https://github.com/sjinjin7/Blog_Project
프로젝트 포스팅 색인(index) : https://kimvampa.tistory.com/188

 

목표

장바구니 추가 기능 구현

 장바구니는 로그인한 사용자만 사용할 수 있도록 하기 위해서 관리자 페이지와 같이 '인터셉터 적용'을 해주는 것을 목표로 합니다.

 

※ Interceptor에 대해선 아래의 포스팅에 따로 정리했습니다.

[spring] Spring Interceptor 란?(HandlerInterceptor, HandlerInterceptorAdapter)

 

 

 

순서

1. servlet-context.xml

2. CartInterceptor.java

 

1. servlet-context.xml

 장바구니 url("cart/**")에 대해서만 적용을 하도록 별도의 Interceptor 클래스를 등록해줄 것입니다. 클래스를 생성해서 작성하기 전에 우리가 생성하고 작업할 Interceptor 클래스가 스프링에서 관리하도록 servlet-context.xml에 설정을 추가해줄 것입니다.

 

 이전에 작성해둔 Interceptor 설정 코드에 아래의 코드를 추가해줍니다. 설정 내용은 com.vam.interceptor 패키지의 CartInterceptor를 등록하고 해당 Interceptor는 "/cart" url을 타는 모든 요청이 CartInterceptor를 거친다는 의미입니다.

 

		<interceptor>
			<mapping path="/cart/**"/>
			<beans:bean id="CartIntreceptor" class="com.vam.interceptor.CartInterceptor"></beans:bean>
		</interceptor>

 

그림 1-1

 

 

 

2. CartInterceptor.class

 

 com.vam.interceptor 패키지에 CartInterceptor.java 클래스를 생성해줍니다.

 

그림 2-1

 

 

 HandlerInterceptor을 상속해줍니다.

 

implements HandlerInterceptor

 

그림 2-2

 

 

 우리는 preHandler 메서드만 사용할 것이기 때문에 preHandler만 오버라이딩 해줍니다.

 

그림 2-3

 

그림 2-4

 

그림 2-5

 

 

 이 메서드를 작성하고자 하는 이유는 "/cart/**" url을 이용하는 사용자가 요청을 하였을 때 Controller로 요청이 가기 전 요청자가 로그인을 하였는지 확인 한하는 것입니다. 로그인을 하였다면 정상적으로 요청이 Controller로 갈 것이고, 하지 않았다면 메인 페이지로 리다이렉트 할 것입니다.

 

 로그인 시 sesseion "member"라는 키로 로그인 사용자 정보 데이터를 저장해두었습니다. 따라서 session의 "member"를 불러들여서 데이터 있는지 없는지를 통해 로그인 여부를 판단할 것입니다. 

 

 앞서 말한 로직을 가지도록 아래의 코드를 추가해주었습니다. 

 

		HttpSession session = request.getSession();
		
		MemberVO mvo = (MemberVO)session.getAttribute("member");
		
		if(mvo == null) {
			response.sendRedirect("/main");
			return false;
		} else {
			return true;
		}

 

그림 2-6

 

 

REFERENCE

  •  

 

 

DATE

  • 2020.11.17

 

728x90
반응형
Comments