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>