반응형
PRG Post/Redirect/Get
기존 코드
@PostMapping("/add")
public String add(@ModelAttribute Item item) {
itemRepository.save(item);
return "basic/item";
}
기존 코드의 문제점 :
이러한 경고 메시지와 함께 새로고침할 경우 데이터가 계속 추가되는 문제 발생
위 문제를 해결하기 위해서 상품 저장이 성공할 경우, 상품 상세 화면으로 리다이렉트 함으로써 해결할 수 있다.
@PostMapping("/add")
public String add(@ModelAttribute Item item) {
itemRepository.save(item);
// return "basic/item";
return "redirect:/basic/items/" + item.getId();
}
RedirectAttributes
하지만, 위 처럼 + item.getId() 형식을 사용하면 URL 인코딩이 안되기 때문에 위험하다.
@PostMapping("/add")
public String add(@ModelAttribute Item item, RedirectAttributes redirectAttributes) {
Item savedItem = itemRepository.save(item);
redirectAttributes.addAttribute("itemId", savedItem.getId());
redirectAttributes.addAttribute("status", true);
// return "basic/item";
return "redirect:/basic/items/{itemId}";
}
실행결과 : http://localhost:8080/basic/items/3?status=true
RedirectAttribute를 사용해서 URL 인코딩을 할 수 있다.
출처
[인프런] 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-1/dashboard
스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 - 인프런 | 강의
웹 애플리케이션을 개발할 때 필요한 모든 웹 기술을 기초부터 이해하고, 완성할 수 있습니다. 스프링 MVC의 핵심 원리와 구조를 이해하고, 더 깊이있는 백엔드 개발자로 성장할 수 있습니다., -
www.inflearn.com
반응형
'WEB > Spring 인강' 카테고리의 다른 글
[Spring] 스프링 공부 #27 (0) | 2022.04.14 |
---|---|
[Spring] 스프링 공부 #26 (0) | 2022.04.14 |
[Spring] 스프링 공부 #24 (0) | 2022.04.06 |
[Spring] 스프링 공부 #23 (0) | 2022.04.05 |
[Spring] 스프링 공부 #22 (0) | 2022.04.05 |