프로그래밍/스프링[Spring]
[스프링] 자바 redirect 시 파라미터 전달하기
yohoi
2023. 2. 13. 22:18
redirect 시 VO도 같이 전달을 해보도록 하겠습니다.
Model 에서 쓰는 방법과 유사합니다
- addAttribute :GET 방식이며 페이지를 새로고침 한다 해도 값이 유지됨
- addFlashAttribute: POST 방식이며 이름처럼 일회성 데이터라 새로고침 하면 값이 사라짐
간단하게 addAttribute, addFlashAttribute 차이점을 알아보겠습니다.
addAttribute 사용법 입니다.
각 파라미터를 지정하여 보낼 수 있습니다.
@RequestMapping(value = "redirect.do")
public String redirect(UserVO userVO, RedirectAttributes reAttr) {
userVO.setEmail("테스트");
userVO.setName("홍길동");
reAttr.addAttribute("email",userVO.getEmail());
reAttr.addAttribute("name",userVO.getName());
return "redirect:/redirect/test.do";
}
//리다이렉트
@RequestMapping(value = "redirect/test.do")
public String test(UserVO userVO) {
System.out.println(userVO.getEmail());
System.out.println(userVO.getName());
return "/main/main";
}
다음과 같이 주소를 요청하면
GET 방식으로 주소에 파라미터가 붙어서 전송이 됩니다.
다음과 같이 test에 제대로 도착합니다.
VO를 보내는 방법입니다.
addFlashAttribute 를 사용하여 전송합니다.
@RequestMapping(value = "redirect.do")
public String redirect(UserVO userVO, RedirectAttributes reAttr) {
userVO.setEmail("테스트");
userVO.setName("홍길동");
reAttr.addFlashAttribute("userVO",userVO);
return "redirect:/redirect/test.do";
}
//리다이렉트
@RequestMapping(value = "redirect/test.do")
public String test(HttpServletRequest request, UserVO userVO) {
Map<String, ?> flashMap =RequestContextUtils.getInputFlashMap(request);
if(flashMap!=null) {
userVO =(UserVO)flashMap.get("userVO");
}
System.out.println(userVO.getEmail());
System.out.println(userVO.getName());
return "/main/main";
}
addFlashAttribute 를 사용하여 다음과 같이 주소를 요청합니다
다음과 같이 redirect 된 url만 표시가 됩니다.
addAttribute 는 GET 방식으로 전송하는 형태라 파라미터가 붙습니다.
addFlashAttribute 는 POST 방식으로 Flash라 한번만 사용이 가능하며 새로고침시 데이터가 사라집니다.
용도에 맞게 사용하는게 좋아 보입니다.
이상으로 마치겠습니다
감사합니다.