WebServer/Spring

[Spring] 스프링의 포워드(forward)와 리다이렉트(redirect) + RedirectAttributes

gangintheremark 2023. 9. 17. 19:36
728x90
 

[Servlet] 요청 위임

클라이언트의 요청을 받은 서블릿에서 다른 컴포넌트(서블릿, JSP, html)로 요청을 위임할 수 있다. 직접 요청 받은 서블릿에서 모든 작업을 처리하지 않고 위임한 컴포넌트에서 특정 작업을 처리

gangintheremark.tistory.com

리턴 타입이 String 일 때, 다음과 같은 특별한 키워드를 붙여서 사용할 수 있다.

  • forward : 포워드 방식으로 처리 forward:target
  • redirect : 리다이렉트 방식으로 처리 redirect:target

 

포워드(forward) 처리

  • 화면 URL 변경 X
  • request scope에 저장된 데이터 target에서 사용 가능
    @RequestMapping("/aaa")
    public String aaa(Model m) {
        m.addAttribute("userid","옥지얌");
        return "forward:xxx";
    }

 

리다이렉트(redirect) 요청

  • 화면 URL 변경
  • request scope에 저장된 데이터 target에서 사용 불가
    @RequestMapping("/bbb")
    public String bbb(Model m) {
        m.addAttribute("userid","옥지얌");
        return "redirect:xxx";
    }


flash scope

RedirectAttributes는 redirect 처리를 한 경우 일회성으로 데이터를 전달할 수 있다.

    @RequestMapping("/bbb")
    public String bbb(RedirectAttributes m) {
        m.addFlashAttribute("userid", "옥지얌");
        return "redirect:xxx";
    }

RedirectAttributes는 파라미터로 선언해서 사용하고, addFlashAttribute(이름, 값) 메서드를 이용해 화면에 한 번만 사용하고 다음에는 사용되지 않는 데이터를 전달하기 위해 사용한다.

728x90