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 클래스의 메소드를 이용하여 데이터를 저장하고 꺼내올 수 있다. 아래는 사용 예이다.
'Dev Story > dev' 카테고리의 다른 글
[Eclipse] 강제종료 후 실행이 안될 때 (10) | 2014.01.23 |
---|---|
Eclipse에서 SVN Connector 플러그인 수동 설치 (0) | 2013.11.26 |
[AngularJS] What's AngularJS (0) | 2013.04.02 |
[eclipse] Garbage Collector (0) | 2013.04.02 |
[springframework] ContentNegotiatingViewResolver의 역할과 설정하기 (0) | 2013.03.29 |