Day85 - [Spring]컨트롤러에서 view 로 변수 전달하기

2021. 6. 16. 19:42Spring

저번 포스팅에서는, view 에서 컨트롤러로 parameter 전달하는 것을 알아 봤었죠?

 

이번에는, 컨트롤러에서 view 로 parameter 전달하는 것을 알아 봅시다

 

컨트롤러 -> view

컨트롤러에서 view 로 매개변수를 전달하는 방법은 4가지가 있습니다.

 

1. Model 객체 이용하기.

처음에, 컨트롤러를 경유할 때, 컨트롤러의 메서드에 Model 객체를 사용 합니다.

 

addAttribute( key, value ) 를 사용 합니다.

view 화면에서는, EL 표기법을 사용해서 key 를 사용 합니다.

2. ModelAndView 객체 이용하기

ModelAndView 객체는, parameter 를 저장하기도 하고, view 의 정보를 저장하기도 합니다.

 

반환 타입을 ModelAndView 로 사용합니다.

 

변수의 저장은 addObject( 키, 값)

뷰의 저장은 setViewName("경로")

 

를 사용합니다.

view 에서는 똑같이 EL 표기법을 사용해서 꺼냅니다.

3. @ModelAttribute 어노테이션 이용하기

@ModelAttribute 는 어노테이션의 일종으로, 메서드의 매개변수에 자리 합니다.

 

@ModelAttribute 는 넘어오는 parameter 를 그대로 view 에 보냅니다.

@ModelAttribute("키") 변수타입 변수명  으로 사용합니다.

 

여기서 키는, view 로 넘어가는 키 입니다.

 

String a 는 컨트롤러에서 사용할 변수 입니다. key에 해당하는 값이 a 에 들어 갑니다.

view 에서는, EL 표기법을 사용해서 꺼냅니다.

 

@ModelAttribute 는 단일 값만 받고, 넘기고 할 수 있는데, 여러개의 값을 넘기고 싶다면, VO 객체 ( 여러개의 멤버변수를 가진 ) 를 만들어서 사용 합니다.

 

view 에서는 , 키값인 "info" 에 . 을 찍어서 EL 표기법으로 사용합니다.

4. RedirectAttributes 객체 이용하기

RedirectAttributes 는 , redirect 방법으로 view 를 이동할 때, 매개변수를 단 1번만 저장하는 방법 입니다.

 

Spring은 mvc2 구조의 framework 를 가지고 있기 때문에, 기본적으로 forward 형식으로 view 를 넘어가게 됩니다

forward 의 특징은, 특정 객체들을 가지고 간다는 것. url주소를 페이지 이동 전인 채로 유지된다 라는 점이 있습니다.

 

그런데, redirect 로 페이지를 이동하게 되면, forward 에서의 특정객체들을 초기화 시켜버리기 때문에, 위의 1~3 번 방법은 사용할 수 없습니다.

 

그렇기 때문에, 따로 RedirectAttribute 객체가 존재 합니다.

 

보통, redirect 는 컨트롤러 -> 컨트롤러 로 이동할 때 사용하게 되고, 이동할 경로 앞에 "redirect:/" 를 붙입니다.

 

redirect 시에 parameter 를 저장하고 싶다면, RedirectAttributes 객체의 addFlashAttribute 를 사용하면 됩니다.

이는 단 1번만 저장이 됩니다 ( 다음 페이지에서만 사용 가능 )

 

view 에서는 EL 표기법으로 사용합니다.

 

예제.