BackEnd/spring

간단한 Web페이지 프로젝트(6) - PRG Post/Redirect/Get

연향동큰손 2024. 7. 7. 19:29

지금까지 진행하고 있던 프로젝트에 문제점이 있다.

◆ 상품 등록을 완료하고 새로고침을 누르면 상품이 계속 중복 등록이 되는 것을 확인할 수 있다.

새로고침 겱과 상품 중복 등록

문제 원인

 

웹 브라우저 새로고침은 마지막에 서버에 전송한 데이터를 다시 전송한다.

상품을 등록할때 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라 한다.