본문 바로가기

Dev Story/dev

[springframework 3.1] Redirect - FlashMap, RedirectAttributes

Spring MVC의 Controller에서 특정페이지 또는 다른 Controller로 Redirect 할 때 파라메터를 전달하는 방법은 크게 다른게 없었다. 이동하고자 하는 URL 뒤에 파라메터를 붙여주는 방법이다.


간단하게 해결할 수 있는 방법이긴 한데 이럴 경우 Redirect 되는 페이지 주소에 파라메터 정보도 같이 붙어 나오게 된다.

왠지 정보를 숨기고 싶어서 생각할 수 있는 방법이 Session에 넣어두는 방법이다. Session에 정보를 넣었다가 뺐다가 해야 하는데 이것도 왠지 완벽하지 않다. 


이런 문제점을 해결하기 위해서 Spring 3.1 부터는 Redirect 할 때 파라메터를 쉽게 전달할 수 있도록 RedirectAttributes , FlashMap 클래스를 제공한다.



먼저 RedirectAttributes를 사용하여 Redirect시 파라메터를 저장할 수 있는데 두가지 방법으로 가능하다.


첫번째 방법은 addAttribute 메소드로 값을 저장한다. 이 경우에 URL에 파라메터가 붙어 전달되게 된다. 그렇기 때문에 전달된 페이지에서 파라메터가 노출되게 된다.


두번째 방법은 addFlashAttribute 메소드로 Redirect 동작이 수행되기 전에 Session에 값이 저장되고 전달 후 소멸된다.

Session을 선언해서 집어넣고 사용후 지워주는 수고를 덜어주는 아주 유용한 기능이라고 볼 수 있다.

다음은 사용 예이다.


FlashMap에 값을 추가하고 가져올 수 있는 API도 제공하는데 RequestContextUtils 클래스의 메소드를 이용하여 데이터를 저장하고 꺼내올 수 있다. 아래는 사용 예이다.