이번 내용은 리다이렉트 전송시
parameter를 URL에 붙여서 전송하기 싫어하는 분들을 위한 포스팅입니다.
Spring3 에서 제공하는 RedirectAttributes를 사용하면
redirect post 구현이 가능합니다.
하지만 일회성입니다.
새로고침하면 날라가는 데이터이므로
사용목적에 따라서 사용/불가능 판단을 잘 하셔야 할거 같습니다.
컨트롤러에 일반 GET방식 테스트를위한 컨트롤러를 만들도록 하겠습니다.
/** * redirect페이지로 넘기기 위한 컨트롤러 * @return */ @RequestMapping("/redirectpage") public String redirectpage(){ return "redirect:/herepage?key1=value1&key2=value2"; } /** * redirect되는 컨트롤러 * @return */ @RequestMapping("/herepage") public String herepage(@ModelAttribute(value="vo") RedirectVo vo){ return "herepage"; }
herepage 컨트롤러에 return 페이지인 herepage.jsp파일을 views 디렉토리내에 생성 후
다음과 같이 body 태그에 코드를 추가해보도록 합니다.
<h2>Redirect 페이지</h2> key1 :: ${vo.key1 }<br/> key2 :: ${vo.key2 }
리다이렉트 테스트를 위하여 호출을 해보도록 하겠습니다.
위처럼 화면에 value값이 화면에 출력이 되었습니다.
하지만 브라우저 URL뒤에 PARAMETER값들이 붙어있습니다.
브라우저내에 parameter값이 안붙게끔 RedirectAttributes를 이용해보도록 하겠습니다.
다음 컨트롤러를 추가 해보겠습니다.
/** * redirect 신규페이지로 넘기기 위한 컨트롤러 * @return */ @RequestMapping("/redirectnewpage") public String redirectnewpage(RedirectAttributes redirectAttributes){ Map<String, Object> map = new HashMap<String,Object>(); map.put("key1", "value1"); map.put("key2", "value2"); redirectAttributes.addFlashAttribute("vo", map); return "redirect:/herepage"; }
RedirectAttributes의 addFlashAttribute메서드에 key/value로 웹페이지에 값을 넘겨줄수 있지만
하나의 key값으로 넘겨주어야 하므로 여러개의 값을 페이지로 넘겨 줄 경우
list나 map 형태의 객체를 value로 담아서 넘겨주면 되겠습니다.
RedirectAttributes를 이용하여 최초 GET방식으로 REDIRECT 해줬던 RETURN 페이지와 동일합니다.
herepage 컨트롤러의 코드일부를 변경하보도록 하겠습니다.
herepage parameter인 "@ModelAttribute(value="vo") RedirectVo vo" 코드를 삭제해줍니다.
삭제가 되면 다음처럼 코드가 변경되겠습니다.
/** * redirect되는 컨트롤러 * @return */ @RequestMapping("/herepage") public String herepage(){ return "herepage"; }
이제 신규 리다이렉트 컨트롤러를 호출해보도록 하겠습니다.
위와같이 URL에 PARAMETER가 붙지않고 정상적으로 웹페이지에 결과값을 출력하였습니다.
하지만 새로고침을 하게된다면?
위와같이 빈값으로 나오게 됩니다.
필요여부에 따라 사용하시면 되겠습니다.
by 개발로짜
Spring3 Maven을 이용하여 pom.xml에 oracle,mysql,mssql jdbc 라이브러리 등록하기 (0) | 2014.11.14 |
---|---|
Spring3 인터셉터와 세션을이용하여 로그인 처리해보기 (2) | 2014.11.12 |
Spring3 Pathvariable 어노테이션을 이용하여 PARAMETER를 URL처럼 받아보기 (0) | 2014.11.11 |
Spring3 jackson JSON 라이브러리 + ResponseBody 이용하여 JSON 파싱하기 (0) | 2014.11.10 |
Spring3 RESTFUL 방식 리소스파일 및 favicon 인식할수 있게 설정하기 (3) | 2014.11.07 |