PRG (Post Redirect GET) 패턴
상품저장 Controller를 호출하고 바로 상품상세 페이지를 보내준다.
새로고침은 마지막 요청을 다시하는 셈이다. 상품 등록 페이지에서 새로 고침을 할때마다 저장이 된다.
상품저장후 뷰 템플릿으로 이동하는것이 아니라 , 상품 상세 화면으로 리다이렉트를 호출해주면 된다.
@PostMapping("/add")
public String addItemV4(Item item) {
itemRepository.save(item);
return "basic/item";
}
@PostMapping("/add")
public String addItemV6(Item item, RedirectAttributes redirectAttributes) {
Item savedItem = itemRepository.save(item);
redirectAttributes.addAttribute("itemId", savedItem.getId());
redirectAttributes.addAttribute("status", true);
return "redirect:/basic/items/{itemId}";
}
이런식으로 redirect를 통해 사용자의 마지막 요청이 get 으로 남아있게 한다.
post add -> 응답 302 (redirect) -> browser에서 redirect에 명시된 url 로 get요청을 다시 날림
RedirectAttributes 를 통해 URL 인코딩과 원하는 attribute를 추가 할 수 있다.
위의 예시에서는 itemId는 url로 가고 남는 status는 get 요청시 query param으로 날라가게 된다. (~~~?status=true)
'WEB > Spring MVC 1' 카테고리의 다른 글
스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술(스프링 MVC - 기본기능) (0) | 2021.03.30 |
---|---|
스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술(스프링 MVC - 구조이해) (0) | 2021.03.29 |
스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술(MVC 프레임워크 만들기) (0) | 2021.03.29 |
스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술(서블릿,JSP,MVC패턴) (0) | 2021.03.28 |
스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술(서블릿) (0) | 2021.03.27 |