본문 바로가기
Spring

[Spring] Model 과 RedirectAttiributes 타입으로 데이터 전달

by jane.dev 2021. 9. 21.
반응형
Spring MVC를 이용하는 경우 작성되는 Controller에서는
HttpServletRequest, HttpServletResponse를 거의 사용하지 않고
필요한 기능을 구현할 수 있음

 

Model

Model은 컨트롤러에서 생성된 데이터를 담아 JSP로 전달하는 역할을 함

 

Controller에서 메서드를 작성 시, Model 타입을 파라미터로 지정하면 스프링은 Model 타입의 객체를 생성해 메서드에 주입

→ MVC2에서의 request.setAttribute()와 비슷

// MVC2
public class UserJoinService implements UserService{

    @Override
    public void execute(HttpServletRequest request, HttpServletResponse response){
        request.setAttribute("userId", userId);
        RequestDispatcher dp = request.getRequestDispatcher("jsp파일 경로/파일명.jsp");
        dp.forward(request, response);
    }
}

 

// spring
public String userJoin(Model model){
    model.addAttribute("userId", userId);
    return "jsp파일명";
}

주로 Controller에 전달된 데이터를 이용해 추가적인 데이터를 가져와야 할 경우 사용

 

RedirectAttributes

RedirectAttributes는 데이터를 가져와 해당 JSP에서 한번 사용하고 더이상 사용되지 않는 데이터를 전달

 

Model 타입과 같이 파라미터로 선언하며 addFlashAttribute("이름", 값) 메서드를 이용

→ MVC2에서의 response.sendRedirect()와 비슷

// MVC2
response.sendRedirect("/board/detail?title=test&writer=test");

 

// spring
public String detail(RedirectAttributes rttr){
    rttr.addFlashAttribute("title", "test");
    rttr.addFlashAttribute("writer", "test");
    
    return "redirect:/board/detail";
}