Programming/Spring

Model, ModelAndView

2swan 2023. 9. 19. 12:43
Model:
● 데이터를 뷰로 전달하기 위한 방법
● 컨트롤러 메서드의 매개변수로 사용되며, 컨트롤러 내에서 데이터를 추가하고 뷰에 전달할 수 있다.
● 데이터를 전달하는 역할을 하며, 뷰 템플릿에서는 이 데이터를 사용하여 동적으로 웹 페이지를 생성한다.
● Model을 사용하면 컨트롤러에서 데이터를 직접 추가하고 뷰로 전달할 수 있다.
@Controller
public class MyController {

    @GetMapping("/insert")
    public String insert(Model model) {
        // 데이터를 Model에 추가
        model.addAttribute("message", "Hello, World");
        return "viewName"; // 뷰 이름 반환
    }
}
@RequestMapping(value = "/")
public String index(Model model) {
    model.addAttribute("name", "홍길동");
    return "viewName";
}

 

 

 

ModelAndView:
● Model과 뷰의 이름을 함께 포함하는 클래스
● Model에 데이터를 추가하고, 뷰의 이름을 설정한 후 ModelAndView 객체를 반환한다.
● 데이터와 뷰의 이름을 함께 반환할 때 사용된다
//example 1
@Controller
public class MyController {

    @GetMapping("/insert")
    public ModelAndView insert() {
        // 데이터를 ModelAndView에 추가
        ModelAndView modelAndView = new ModelAndView("viewName");
        modelAndView.addObject("message", "Hello, World");
        return modelAndView;
    }
}
//example 2
@Controller
public class BoardController {
    
    @GetMapping("/board")
    public ModelAndView showBoard() {
        // Board DTO 객체 생성 및 데이터 설정
        BoardDTO boardDTO = new BoardDTO();
        boardDTO.setTitle("Sample Board");
        boardDTO.setContent("This is a sample board.");
        
        // ModelAndView 객체 생성 및 뷰 이름 설정
        ModelAndView modelAndView = new ModelAndView("boardView");
        
        // ModelAndView에 Board DTO 객체 추가
        modelAndView.addObject("boardDTO", boardDTO);
        
        // ModelAndView 반환
        return modelAndView;
    }
}
<!DOCTYPE html>
<html>
<head>
    <title>Sample Board</title>
</head>
<body>
    <h1>${boardDTO.title}</h1>
    <p>${boardDTO.content}</p>
</body>
</html>