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라 한번만 사용이 가능하며 새로고침시 데이터가 사라집니다.
용도에 맞게 사용하는게 좋아 보입니다.
이상으로 마치겠습니다
감사합니다.
'프로그래밍 > 스프링[Spring]' 카테고리의 다른 글
[Spring] session 에 변수 저장하기 (0) | 2023.02.15 |
---|---|
[스프링] 시큐리티 Access Denied 페이지 설정(자바, XML) (0) | 2023.02.15 |
[소셜 로그인] 네이버, 카카오, 구글 버튼 가이드 링크 (0) | 2023.02.03 |
이클립스(Eclipse) 허용 메모리(Heap size) 간단 설정 (2) | 2023.01.28 |
[Spring] Mybatis selectKey 사용 방법(Insert 후 특정 키 받기) (0) | 2023.01.18 |