반응형
- redirect를 사용하여 파라미터 담아서 넘겨주기 -
웹 개발 진행 중에 redirect를 사용하여 파라미터를 넘겨줘야 하는 경우가 있으니 그 방법에 대해 알아보자.
우선 알아둬야할것은
RedirectAttributes 인터페이스를 통해서 전달하게 되는데
파라미터를 담아서 넘겨줄 때 사용하는 함수는 총 3개로 각각
- addAttribute
- addAllAttributes
- addFlashAttribute
이렇게 존재하는데 이 게시글에서는 "addAttribute"와 "addFlashAttribute"에 대해서만 다루고자 한다.
우선 예제를 한번 보고 그다음 둘의 차이와 특징에 대해 설명해보자.
▶예제 1)
@RequestMapping(value = "/mine.do", method = RequestMethod.POST)
public String mine(RedirectAttributes redirect) {
redirect.addAttribute("mine", "record");
redirect.addFlashAttribute("msg", "나만의 기록들");
return "redirect:/record.do";
}
@RequestMapping(value="/record.do")
public String record(@RequestParam("mine") String mine, MineVO mineVO, Model model){
...
return "mine";
}
위에서 설명한 것처럼 RedirectAttributes 인터페이스를 사용하여 파라미터를 담아서 넘겨주는데
addAttribute와 addFlashAttribute의 차이점은 뭘까?
addAttribute는 GET 방식이며 페이지를 새로고침 한다 해도 값이 유지된다.
addFlashAttribute는 POST 방식이며 이름처럼 일회성 데이터라 새로고침 하면 값이 사라진다.
추가적으로 redirect를 사용하다 보면 알겠지만
값을 받는 방식은 @RequestParam을 사용해도 좋고, 대부분 VO를 통해서 받고는 한다.
addAttribute와 addFlashAttribute는 둘 다
당연히 Obejct를 전송할 수 있으므로 map 이라던가 VO를 그대로 전송해도 된다.
(테스트를 해보니 VO를 전송하면 VO로 받을 수 있더라.)
반응형
댓글