반응형
결론 : 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
반응형
'개발 > Web' 카테고리의 다른 글
[Web] XFF - Load balancers 혹은 Proxy 환경에서 Client IP 가져오기 (0) | 2022.01.20 |
---|---|
[Spring] @Transactional이 적용되지 않을 경우(롤백이 안되는 이유) (0) | 2022.01.13 |
[Web] PRG 패턴 (Post - Redirect - Get) (2) | 2022.01.07 |
[JBoss] 로깅 문제, 자체적으로 사용하는 로그 라이브러리 제외하기 (0) | 2021.12.31 |
[Spring Framework] CSRF 적용 (1) | 2021.12.14 |
댓글