본문 바로가기
Team Project (국비)/Team Project 메모

최종프로젝트 Controller, View 파트 진행도

by Hwanii_ 2023. 9. 12.
728x90

23.09.09

 

오늘 한일)

 

1)

쿠폰 관련 유효성 검사를 처리 했다.

 

오늘 이슈)

 

1)

상품 결제페이지 에서, 쿠폰을 적용을 하고, 결제 하기 버튼을 누르고, 다음 페이지로 이동 하고,

그 이동한 페이지에서 새로 고침을 하면 쿠폰의 할인율이 계속 해서 적용 되는 이슈가 발생 했다.

 

컨트롤러 에서, 경로에 redirect: 를 붙혀서 이슈를 해결 했다.

 

이를, PRG 디자인 패턴 이라고 한다.

 

Post-Redirect-Get 의 줄인말로,

쿠폰을 적용 하고 나서, 리다이렉트를 붙힌 상태에서 다음 결과 페이지로 넘어 가면,

새로 고침시, 이전 .do 요청을 할 수 없게 된다.

즉, 그전에 요청값을 모두 공중 분해 하고 새로운 페이지로 이동 하기 때문에,

새로고침을 하더라도 쿠폰 적용 상태를 다시 보내는 요청을 할 수 없게 된다.

 

PRG 디자인 패턴은 중복 폼 제출과 같은 문제를 해결 하는데 도움되는 개념 이라고 한다.

 

2)

상품 결제시, 쿠폰을 적용 하고, 뒤로 가기 버튼을 누르면,

적용 했었던 쿠폰이, 아직 사용 완료한 쿠폰이 되는것은 아니기 때문에,

해당 쿠폰을 다시 적용 할 수 있을텐데,

이때,

해당 쿠폰 또는 다른 쿠폰을 적용 하고 다음 페이지로 이동 하면,

이전에 쿠폰 가격으로 적용 되었던 할인된 가격에 또 한번 쿠폰 할인율이 계산 되는 이슈가 발생 했다.

 

이는,

세션으로 관리된 기존 상품에 대한 총 가격과,

세션으로 관리되는 쿠폰 할인율이 적용된 상품 총 가격의,

변수가 동일 하기 때문에 중복으로 쿠폰이 적용 되는 이슈 였고,

 

기존 총 가격과 할인율이 적용된 총 가격에 대한 변수를 각각 다르게 지정 해 주고,

다음 페이지로 넘어갈 때마다, 최초로 행해지는 코드로,

상품 총 가격에 대한 세션 값을, 기존에 상품 총 가격으로 설정하는것으로 작성 해서 해결 했다.

 

session.setAttribute("useCouponDiscountTotal", session.getAttribute("total")); //  할인된 총 가격을 기존의 총 가격으로 초기화.

 

3)

상품 결제시, 쿠폰을 적용 하고, 뒤로 가기 버튼을 눌렀을 때,

만약에, 사용자가 2)의 경우와 다르게, 

변심으로 쿠폰 적용을 안하고 다시 다음 페이지로 넘어가게 되면,

View 에서는 쿠폰 적용을 안했을 경우, 쿠폰 데이터의 디폴트 값을 0으로 보내주지만,

기존 세션에는 할인된 총 가격이 남아 있기 때문에,

쿠폰을 적용 하지 않았는데도, 할인된 총 가격으로 보이는 이슈가 발생 했다.

 

마찬가지로,

 

기존 총 가격과 할인율이 적용된 총 가격에 대한 변수를 각각 다르게 지정 해 주고,

다음 페이지로 넘어갈 때마다, 최초로 행해지는 코드로,

상품 총 가격에 대한 세션 값을, 기존에 상품 총 가격으로 설정하는것으로 작성 해서 해결 했다.

 

session.setAttribute("useCouponDiscountTotal", session.getAttribute("total")); //  할인된 총 가격을 기존의 총 가격으로 초기화.

 

내일 할일)

 

1)

사용자가 특정 쿠폰을 사용 하려고 적용 버튼을 누른 경우에,

비동기처리로 화면 이동없이,

쿠폰 적용 상태 열의 해당하는 행 값만 "적용" 이라고 동적으로 업데이트 되는 설계 였다.

 

하지만,

모든 행 값이 "적용" 으로 업데이트 되는 이슈가 발생 해서,

이 부분을 수정해 보려고 한다.

 

느낀점)

 

1)

가격 같은 값을 세션으로 관리하다 보니까, 세션을 관리함으로써 무거워지는 단점이 존재했고,

위는 개발론적인 관점이라고 치더라도,

실제로 세션값을 주고 받고 하기 때문에,

값을 어느 시점에는 없애야 하고, 어느 시점에는 사용 해야 하고 하는 부분에 있어서,

코드를 단순하게 구성 할 수 없게 될 수도 있다는 생각이 들었다.

 

정말 중요한 값 (데이터) 에 대해서만,

세션으로 관리 할 수 있도록 설계하는게 좋지 않을까 라는 생각을 갖게 되었다.

반응형