상품 새로고침 할 때 중복 등록 문제

최주영·2024년 2월 13일
0
post-thumbnail

✅ 문제점

  • 다음과 같은 코드는 위 그림과 같이 새로고침 하면 중복 등록하는 문제점이 발생한다
    @PostMapping("/add")
    public String addItemV1(@RequestParam String itemName,
                       @RequestParam int price,
                       @RequestParam Integer quantity,
                       Model model){
        Item item = new Item();
        item.setItemName(itemName);
        item.setPrice(price);
        item.setQuantity(quantity);

        itemRepository.save(item);

        model.addAttribute("item",item);

        return "basic/item";
    }

  • 웹 브라우저 입장에서는 마지막 요청한 것이 POST/add 한것이 마지막 동작이므로
    -> 새로고침을 하면 마지막으로 동작 했던 POST/add가 다시 동작하는 문제점이 발생한다
    (동일한 데이터와 요청방법)
    💡 새로 고침 : 마지막에 서버에 전송한 데이터를 다시 전송하는 것

✅ 해결방법 -> PRG (POST, Redirect, GET)

  • Redirect 사용시 -> 마지막으로 수행한 작업은 3.GET/items/{id} 이므로
    상품상세 보기가 마지막 수행한 작업으로 되기 때문에 새로고침을 하더라도 문제가 해결된다
  • Redirect를 하면 url이 바뀌므로 (상품상세로 다시옴)
  • 상품 저장 후 뷰템플릿으로 이동하는 것이 아니라, 상품 상세화면으로 Redirect 호출하기
profile
우측 상단 햇님모양 클릭하셔서 무조건 야간모드로 봐주세요!!

0개의 댓글