반응형
import 란? 아임포트는 쇼핑몰 서버를 대신해서 쇼핑몰에서 사용자가 상품을 구매하려 할 때 실제 결제 요청 받는 역할을 하고 이 요청을 받아서 PG(결제 대행 업체)에 요청을 해준다. 그리고 결제 정보 결과에 대해서 응답을 받을 수 있다. 그렇기 때문에 웹 서버의 부담을 줄일 수 있고, PG사 별로 결제를 요청하는 코드를 작성해야하는 번거로움도 사라지게 된다. iamport는 가이드를 아주 친절하게 제공해주고 무엇보다 한국어로 되어 있어서 보기 편할 것이다. iamport 가이드 iamport 개발자 가이드 ( Notion ) : https://guide.portone.io/test_integration PG 사별 코드표 : https://portone.gitbook.io/docs/tip/pg-2 결..
로그인 사용자에 대한 기능들을 구현하다보면 로그인 사용자의 Session 정보를 활용할 일이 정말 많다. 그렇다 보니 Session 정보를 가져오는 코드마다 아래의 코드가 반복될 것이다. SessionUser user = (SessionUser) httpSession.getAttribute("loginUser"); 이 같은 코드가 반복되는 것을 방지하고자 Spring의 argument resolver를 활용하여 메서드 파라미터의 SessionUser 앞에 @Login 어노테이션을 붙여 세션값을 바로 받아 올 수 있도록 구현할수 있다. 또한 사용자별 세션 정보를 갖고 있으므로, 사용자별로 서로 다른 페이지 내용을 볼 수 있다. ( ex: 마이페이지 ) SessionUser 클래스 세션에 저장할 사용자의 정..
그림과 같이 클릭했던 상품들을 "최근 본 상품"이라는 목록에 보여주는 기능을 추가하게 되었다.이 기능을 구현하기 위해서는 Cookie와 Session을 사용해 구현할 수 있는데, 여기서 고민에 빠졌다.고민하게 된 이유는 다음과 같다. Cookie와 Session방식을 통해 "최근 본 상품"기능을 구현했을 때의 장단점먼저 Cookie는 기본적으로 문자열 형태로 데이터를 저장하며, 복잡한 데이터 타입인 리스트(List)와 같은 자료구조를 그대로 Cookie에 저장하는 것은 지원되지 않는다.그렇기 때문에 복잡한 데이터 타입을 저장하려면 추가적인 로직이 필요하다. (필자는 objectMapper로 JSON 데이터로 변환하여 저장하였다.)게다가 최근 본 상품에는 이미지URL로 해당 상품의 이미지를 보여준다.여기서..
아래와 같은 사이드바에 장바구니에 담긴 상품 개수, 찜 개수, 최근 본 상품이 표시되도록 하는 기능을 구현하게 되었다.그런데 개수 같은 경우에는 count 쿼리로 구해 model에 담아 view넘기는데이 사이드바가 메인, 장바구니, 결제, 상품상세 페이지 등에 적용이되어서 해당 컨트롤러들마다 사이드바에 필요한 데이터를 응답하는 로직이 중복되어 @Aspect로 AOP를 적용하게 되었다.AOP 적용아래는 사이드바에 공통으로 적용할 코드들을 담은 Aspect를 적용한 클래스이다.@Aspect@Component@Slf4j@RequiredArgsConstructorpublic class SidebarAspect { private final LikeService likeService; private f..
적용하게 된 이유 장바구니에 있는 상품들 중에 체크박스가 활성화된 상품들만 결제 페이지로 넘기는 작업을 진행하면서 해당 상품들만 어떻게 GET 요청에 담아서 보내야할까? 라는 의문이 들었다. 처음에는 체크박스가 활성화된 상품들을 배열에 담아 해당 배열을 보내주어야 하는데 처음에는 axios를 통해 비동기로 POST 요청으로 해당 상품들의 정보들을 JSON 객체로 넘겨주려했었다. 하지만, 비동기로 요청하게 되면 컨트롤러에서 view를 반환할 때 해당 view에 체크박스가 활성화된 상품들의 데이터를 model에 담아 넘겨줘야하는데 요청에 대한 응답을 성공적으로 넘겨준후에 axios의 then 구문으로 넘어가게되면서 해당 데이터를 넘겨주기 힘들어지는 문제가 발생했다. (해당 위 방법으로 해결 할수 있을 수도 ..
@ModelAttribute 이 어노테이션은 보통 컨트롤러 메서드의 파라미터 객체의 앞에 사용되며 HTTP 요청을 받으면 HTTP 요청 파라미터를 자동으로 자바 객체에 바인딩 해준다. 요청을 처리하는 스프링 어노테이션으로 주로 @ModelAttribute와 @RequestBody가 많이 헷갈리는데 @ModelAttribute는 content-type이 application/x-www-form-urlencoded인 경우 즉 태그를 통해 제출한 데이터를 받아 객체로 변환하고, @RequestBody는 message body를 통해 넘어온 JSON이나 XML 형식들을 받아 객체로 변환한다. 이 두 어노테이션에 대한 차이는 아래 포스팅을 참고하여 알아 볼 수 있다. 2023.07.05 - [JAVA/Spring..