해당 게시글을 통해 view의 data를 Controller로 전달 받는 방법 외에, Controller의 메서드에서 메서드로 data를 전달받는 방법에 대해 알아볼 수 있다.
목차는 아래와 같다.
1. addAttribute
2. addFlashAttribute
3. 정리
1. addAttribute
addAttribute에 Object(String, int....)를 넣어서 전달이 가능하다.
"aaa/bbb/ccc.do?message=메세지" 와 같이 데이터가 URL에 노출된다.
휘발성이라 재사용이 불가하다는 특징이 있다.
데이터 내용이 간결하거나 노출에 큰 타격이 없으며, 재사용 목적이 없는 경우 사용하는 것을 추천한다.
// Data를 보내는 method
@RequestMapping(valus="/aaa/bbb/ddd.do")
public String sendMessage(Model model, RedirectAttributes redirectAtt) throws Exception{
String message="메세지";
// redirectAtt.addAttribute("설정할 변수명", 보낼 내용);
redirectAtt.addAttribute("message", message);
return "redirect: /aaa/bbb/ccc.do";
}
// Data를 받는 method
@RequestMapping(valus="/aaa/bbb/ccc.do")
public String getMessage(@RequestParam("message") String getData, Model model) throws Exception{
model.addAttribute("sendData", getData);
return "main";
}
2. addFlashAttribute
map, list, vo등을 map형태로 전달할 수 있다.
전달할 데이터가 URL에 노출되지 않는다.
재사용이 가능하다는 특징이 있다.
즉, 전달할 데이터가 많거나 노출되지 않아야하는 경우 사용하는 것을 추천한다.
// Data를 보내는 method
@RequestMapping(value="/aaa/bbb/ddd.do")
public String sendData(Model model, RedirectAttributes redirectAttributes) throws Exception{
testVO message="메세지";
redirectAttributes.addFlashAttrbute("message", message);
return "redirect: /aaa/bbb/ccc.do";
}
// Data를 받는 method
@RequestMapping(value="/aaa/bbb/ccc.do")
public String sendData(Model model, HttpServletRequest request, testVO vo) throws Exception{
Map<String, ?> flashMap = RequestContextUtils.getInputFlashMap(request);
if(flashMap != null){
vo=(testVO)flashMap.get("message");
}
return "main";
}
3. 정리
method간에 데이터를 전달하고 활용하기 위해서는 RedirectAttributes클래스를 활용하여 작업할 수 있다. 관련되는 메서드를 정리하면 아래와 같으며, 각각의 특징을 확인하고 알맞게 사용할 수 있다.
특징 구분 | addAttribute | addFlashAttribute |
유효범위 | 휘발성 O | 휘발성 X |
URL 노출 | 노출됨 | 노출되지 않음 |
아래의 두 블로그 내용을 참고하여 작성되었다.
https://blog.daum.net/king770622/227
[Spring] - method간 데이터 전달 및 활용(RedirectAttributes )
1. 데이터를 보내는 부분 @RequestMapping(value="/member/process.do") public String process(RedirectAttributes redirectAttributes, HttpServletRequest request, HttpServletResponse response) throws Exce..
blog.daum.net
https://web-obj.tistory.com/455
RedirectAttributes(redirect 객체 전달)
redirect 시 데이타를 전달할 수 있는 방법 - RedirectAttributes 클래스를 사용하여 전달할 수 있다. - RedirectAttributes 클래스는 Spring 3.1 버전에 추가되었다고 한다. - redirect시 RedirectAttributes 클..
web-obj.tistory.com
'Spring' 카테고리의 다른 글
[Spring boot] Mybatis Tibero 연동 (0) | 2023.03.27 |
---|---|
[Controller] request.getParameter의 분기 처리 (0) | 2022.09.29 |
[Boot] DAO 버전관리_JdbcTemplate & MyBatis (0) | 2022.04.26 |
[Boot] 스프링부트 기초 + 데이터 유효성 검증 (0) | 2022.04.25 |
[Boot] Spring Boot 설치 (0) | 2022.04.23 |