김영한님의 인프런 강의와 PDF를 바탕으로 정리하였습니다.
https://www.inflearn.com/courses?s=%EA%B9%80%EC%98%81%ED%95%9C
현재 상품등록 폼엔 치명적인 문제가 있습니다.
상품 등록을 하고 새로고침을 누르면 위와 같은 경고창이 뜨고, 무시하고 "계속"을 누르면 상품 목록에 아래와 같은 결과가 나온다.(새로고침 3번 누름)
새로고침은 마지막에 남아있는 http요청을 다시 전송하기 때문에 발생하는 문제입니다.
(한번 등록하려 했던 '안경'이 새로고침을 누른만큼 추가로 등록되는 문제)
하여 아래에서 제시한 방법으로 해결할 수 있습니다.
PRG 적용
redirect는 서버가 클라이언트의 다음 GET을 강제로 적용해버리는 것이다.
위처럼 redirect:/basic/items/item.getId()를 하면 클라이언트가 해당 url을 요청한 것 처럼 작동한다.
RedirectAttributes
위의 redirect url은 예를 들면 /basic/items/2?status=true 와 같이 된다.
저장에 성공했다는 메세지도 띄우기 위해 아이템상세조회 폼에 다음의 html도 추가한다.
상픔등록을하면
상세조회 폼으로 리다이렉트되고, 등록 성공 메시지가 뜬다!
'Spring > spring mvc' 카테고리의 다른 글
컨트롤러 향상시키기 (0) | 2021.06.30 |
---|---|
HTTP 메시지 컨버터, 요청 매핑 핸들러 어댑터 구조 (0) | 2021.06.29 |
(추가 정리) 스프링 요청 응답 정리 (0) | 2021.06.28 |
HTTP 응답 메시지 - 정적 리소스, 뷰 템플릿(동적), HTTP 메시지 바디에 직접 입력 (0) | 2021.06.28 |
HTTP 요청 메시지 -단순 텍스트, JSON (0) | 2021.06.28 |