스프링 MVC 1편 (백엔드 웹 개발 핵심 기술)

Ch07. 스프링 MVC(웹 페이지 만들기) - PRG Post/Redirect/Get

webmaster 2022. 3. 8. 14:37
728x90

지금까지의 등록은 새로고침 시 상품이 중복 저장되는 문제가 있다.

동작 과정

  • 웹 브라우저의 새로 고침은 마지막에 서버에 전송한 데이터를 다시 전송한다.
    • 상품 등록 폼에서 데이터를 입력하고 저장을 선택하면 POST /add + 상품 데이터를 서버로 전송한다.
    • 이 상태에서 새로 고침을 또 선택하면 마지막에 전송한 POST /add + 상품 데이터를 서버로 다시 전송하게 된다.

POST, Redirect GET

PRG 추가

  • 새로 고침 문제를 해결하려면 상품 저장 후에 뷰 템플릿으로 이동하는 것이 아니라, 상품 상세 화면으로 리다이렉트를 호출해주면 된다.
    • 웹 브라우저는 리다이렉트의 영향으로 상품 저장 후에 실제 상품 상세 화면으로 다시 이동한다.
    • 따라서 마지막에 호출한 내용이 상품 상세 화면인 GET /items/{id}가 되는 것이다

Controller

  • 주의 
    • "redirect:/basic/items/" + item.getId() redirect에서 +item.getId()처럼 URL에 변수를 더해서 사용하는 것은 URL 인코딩이 안되기 때문에 위험하다.
728x90