ecsimsw
FlashAttribute 으로 세션을 이용한 리다이렉트 본문
RedirectAttributes 의 addAttribute
RedirectAttributes.addAttribute을 이용하는 경우 쿼리 파라미터로 데이터가 포함되어 재요청된다.
예를 들어 아래처럼 핸들러를 작성하는 경우 리다이렉트의 요청 url은 '/redirected?name=jinhwan' 일 것이다.
@GetMapping(value="/hello")
public String hello(RedirectAttributes redirectAttributes){
redirectAttributes.addAttribute("name", "jinhwan");
return "redirect:/redirected";
}
이는 리다이렉트 시 넘겨야하는 값이 쿼리에 표시가 되어야하기 때문에 String으로 변환이 가능한 원시타입, 또는 직렬화가 가능한 타입만 넘길 수 있을 것이고, 쿼리에 표시되기 때문에 보안에도 안좋다.
addFlashAttribute
FlashAttribute를 사용하면 리다이텍트 시 넘겨야하는 값을 url 이 아닌 세션을 이용하여 전달하고, 리다이렉트 후에는 알아서 삭제해준다.
물론 세션을 이용하기 때문에 원시 타입일 필요도 없다.
@GetMapping(value="/hello")
public String hello(RedirectAttributes redirectAttributes){
redirectAttributes.addFlashAttribute("name","jinhwan");
return "redirect:/redirected";
}
넘긴 속성은 Model 객체에 포함되기 때문에, Model을 주입받아 꺼내 쓰면 된다.
@GetMapping(value="/redirected")
@ResponseBody
public String hi(Model model, String name){
String name = (String)model.asMap().get("name");
return name;
}
'Server application > Spring' 카테고리의 다른 글
Spring AOP 를 사용한 페이지네이션 Max page size 명시 (6) | 2022.08.05 |
---|---|
ResourceHandler, ResourceResolver 로 외부 디렉토리 파일 응답 (2) | 2022.01.11 |
Spring boot의 CORS 설정 (2) | 2021.06.13 |
DispatcherServlet이 요청을 처리하고 응답하는 과정 (0) | 2021.04.16 |
Spring에서 정적 리소스를 다루는 네가지 방법 (2) | 2020.09.13 |
Comments