지금까지 진행하고 있던 프로젝트에 문제점이 있다.
◆ 상품 등록을 완료하고 새로고침을 누르면 상품이 계속 중복 등록이 되는 것을 확인할 수 있다.
문제 원인
웹 브라우저 새로고침은 마지막에 서버에 전송한 데이터를 다시 전송한다.
상품을 등록할때 POST/add를 이용해서 상품 데이터를 서버로 등록하는데,
이 상태에서 새로고침을 하면 POST/add를 한번 더 하게 되므로 ID만 다르게 상품이 계속 등록되는 것이다.
문제 해결법
이러한 문제를 해결하기 위해서 리다이렉트를 이용해주면 된다.
새로 고침 문제를 해결하기 위해 상품 저장 후에 뷰 템플릿으로 이동하는것이 아니라, 상품 상세 화면으로 리다이렉트를 호출해주면 된다.
@PostMapping("/add")
public String addItemV5(Item item) {
itemRepository.save(item);
return "redirect:/basic/items/"+item.getId();
}
이렇게 하면 마지막 호출이 상품 상세 화면인 GET/items/{id}이므로 새로고침을 해도 상품 상세화면으로 이동하는 것을 반복하여 문제가 해결된다.
이러한 문제 해결 방식을 PRG Post/Redirect/Get라 한다.
'BackEnd > spring' 카테고리의 다른 글
스프링 메시지 소스 사용 (0) | 2024.07.24 |
---|---|
간단한 Web페이지 프로젝트(7) - RedirectAttributes (0) | 2024.07.07 |
간단한 Web페이지 프로젝트(5) - 상품 수정 (0) | 2024.07.06 |
간단한 Web페이지 프로젝트(4)- 상품등록 처리-@ModelAttribute (0) | 2024.07.06 |
간단한 Web페이지 프로젝트(3)- 상품 상세 (0) | 2024.07.05 |