스프링 redirect 파마미터 처리 :: 개발/일상_Mr.lee

스프링 redirect 파마미터 처리

Posted by Mr.mandu.
2017. 3. 20. 08:28 개발/java,spring
스프링에서 redirect를 사용할때 파라미터 값을 넘겨야 할 경우가 있다.
예를들어
xxx.do?id=mm&name=lee
이렇게 하면 값은 가지만...
url에 데이터값이 다 노출되기 때문에 먼가 꺼림직하다.
그래서 데이터를 숨기면서 다른 controller로 보낼 방법을 검색하였다.

방법 1.

RedirectAttributes 사용하기

인터페이스는 org.springframework.web.servlet.mvc.support.RedirectAttributes


값 전달하기
@RequestMapping(value="/test.do",method=RequestMethod.POST)
public String test(HttpServletRequest req,@RequestParam Map<string,object>params,
ModelMap  modelMap,RedirectAttributes redirectAttributes)throws Exception{       

 params.put("result", result);
redirectAttributes.addFlashAttribute("params", params); //전달할 값

return "redirect:test.do";


값 받기
  Map<string, ?> flashMap = RequestContextUtils.getInputFlashMap(req); 
        if(flashMap !=null) {   
            // flashMap.get("params") 으로 값 받아서 사용
            params=(Map<string, object>) flashMap.get("params");
        } 


방법 2.

FlashMap  사용하기

인터페이스는 org.springframework.web.servlet.FlashMap


값 전달하기
//FlashMap에 전달할 값을 저장한다. 
 FlashMap fm = RequestContextUtils.getOutputFlashMap(req); 
 fm.put("test", "test"); 

return "redirect:/test.do";   
//여기서 redirect url은 직접 기재하는것을 추천합니다.
//변수명으로 호출했을때 안되는 경우를 접했기 때문에...

값 받기
//FlashMap에 저장되어 전달된 값을 가져온다. 
 Map<String, ?> flashMap = RequestContextUtils.getInputFlashMap(req); 
   if(flashMap !=null) {   
       modelMap.put("test", (String)flashMap.get("test"));
   }