스프링 redirect 파라미터 처리

Jakezo·2021년 9월 5일
0

Spring

목록 보기
5/7

스프링에서 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"));
   }
profile
탐험가

0개의 댓글