본문 바로가기
개발/Web

[Web] redirect시 데이터 전달하는 방법 - RedirectAttributes

by ynzu🤍 2022. 1. 7.
반응형

 

결론 : 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
반응형

댓글