✅ 문제점
@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 호출하기