본문 바로가기
Spring

[Controller] method간의 data 전송

by amoomar 2022. 9. 29.
반응형

 

해당 게시글을 통해 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

 

반응형