개발/Web
[Web] redirect시 데이터 전달하는 방법 - RedirectAttributes
zuzuu
2022. 1. 7. 17:56
반응형
결론 : RedirectAttributes 클래스를 사용하면 된다!
@Controller class TestController {
@PostMapping("/buy")
public String buy(@ModelAttribute("testForm") TestVo vo
, HttpServletRequest request
, RedirectAttributes redirectAttributes){
// 결제 처리 로직
//첫번째 방법
redirectAttributes.addAttribute("param", param);
//두번째 방법
redirectAttributes.addFlashAttribute("param", param);
return "redirect:/buy-result";
}
}
addAttribute
RedirectAttributes.addAttribute()을 사용해면 속성을 넘길 수 있다.
Get 방식이기 때문에 url에 쿼리 파라미터로 표시된다. ex) url : /buy-redirect?param=param
하지만 리프레시해도 데이터가 유지된다.
addFlashAttribute
addAttribute로 속성을 넘기기엔 한계가 있다. url에 쿼리 파라미터로 표시되기때문에 String으로 변환이 가능한 타입만 넘길 수 있으며, url에 데이터가 노출되기때문에 보안측면에서도 좋지 않다.
일회성이라 리프레시할 경우 데이터가 소멸하며, 2개 이상의 데이터를 전달할 경우 Map등을 사용하여 한번에 전달해야 한다.
addFlashAttribute는 객체를 넘길 수 있어 Post 요청이라고 생각할 수 있는데 redirect 자체가 Get 요청이며, 세션을 사용한 객체 전달이다.
728x90
반응형