@PostMapping("/product/addCart")
@ResponseBody
public int cart(@RequestBody ItemRequestDTO itemRequestDTO, @AuthenticationPrincipal UserDetails userDetails) {
int result = productCartService.addToCart(itemRequestDTO, userDetails);
return result;
}
기술 설명
- @PostMapping("/product/addCart"): POST 요청을
/product/addCart경로로 매핑.- @ResponseBody: 반환값을 View가 아닌 HTTP 응답 바디에 직접 직렬화하여 정수(int) 형태로 반환.
- @RequestBody ItemRequestDTO itemRequestDTO: 요청 바디에 실린 JSON을
ItemRequestDTO객체로 바인딩.- @AuthenticationPrincipal UserDetails userDetails: 현재 로그인된 사용자의 인증 정보를
UserDetails로 주입받음.- productCartService.addToCart(itemRequestDTO, userDetails): 서비스 계층에서 전달받은 상품 정보(
itemRequestDTO)와 사용자 정보로 장바구니에 아이템을 추가하는 비즈니스 로직 실행.- return result: 추가 성공 시 결과 코드(예: 1), 실패 시 오류 코드(예: 0)를 클라이언트에 반환.
@GetMapping("/product/cart")
public String cart(@AuthenticationPrincipal UserDetails userDetails, Model model) {
List<CartDTO> cartDTOList = productCartService.findAllByUid(userDetails);
model.addAttribute(cartDTOList);
return "/product/cart";
}
기술 설명
- @GetMapping("/product/cart"): GET 요청을
/product/cart경로로 매핑.- @AuthenticationPrincipal UserDetails userDetails: 현재 로그인된 사용자 정보(
UserDetails) 주입.- productCartService.findAllByUid(userDetails): 해당 사용자(
userDetails.getUsername()등)로 저장된 모든 장바구니 항목(List<CartDTO>) 조회.- model.addAttribute(cartDTOList): 조회된
cartDTOList를 뷰로 전달.- return "/product/cart":
cart.html(또는cart.jsp) 템플릿을 렌더링하여 장바구니 화면을 출력.
@GetMapping("/product/removeItem")
@ResponseBody
public int removeItem(int cartNo) {
int result = productCartService.deleteByCartNo(cartNo);
return result;
}
기술 설명
- @GetMapping("/product/removeItem"): GET 요청을
/product/removeItem경로로 매핑.- @ResponseBody: 반환값을 View가 아닌 HTTP 응답 바디에 직접 정수(int) 형태로 반환.
- int cartNo: 요청 파라미터
cartNo를 자동으로 바인딩 (예:/product/removeItem?cartNo=123).- productCartService.deleteByCartNo(cartNo): 서비스 계층에서 지정된 장바구니 번호(
cartNo)로 항목 삭제 비즈니스 로직 실행.- return result: 삭제 성공 시
1, 실패 시0등 결과 코드를 반환.
@PostMapping("/update/cartProdCount")
@ResponseBody
public ResponseEntity<String> updateQuantity(@RequestParam Integer cartNo, @RequestParam int newQuantity) {
productCartService.updateCartProdCount(cartNo, newQuantity);
return ResponseEntity.ok("수량이 성공적으로 업데이트되었습니다.");
}
기술 설명
- @PostMapping("/update/cartProdCount"): POST 요청을
/update/cartProdCount경로로 매핑.- @ResponseBody: 반환값을 HTTP 응답 바디에 직접
ResponseEntity<String>형태로 반환.- @RequestParam Integer cartNo: 요청 파라미터
cartNo를Integer로 바인딩.- @RequestParam int newQuantity: 요청 파라미터
newQuantity를int로 바인딩.- productCartService.updateCartProdCount(cartNo, newQuantity): 서비스 계층에서 해당 장바구니 항목(
cartNo)의 수량(newQuantity)을 갱신하는 비즈니스 로직 실행.- ResponseEntity.ok("수량이 성공적으로 업데이트되었습니다."): HTTP 200 OK 상태에 문자열 메시지를 포함하여 클라이언트에 전송.