MVC architecture란 무엇일까?
컨트롤러는 데이터와 사용자 인터페이스 요소를 이어주는 중간 다리 역활을 한다. 사용자가 데이터를 수정하는 등 '이벤트'를 처리해야 함을 의미한다.
[요구사항]
Application의 정보, 상태 (Data)를 나타낸다. 또한 이런 데이터, 정보들의 가공을 책임지는 컴포넌트이다.
[요구사항]
뷰는 사용자가 볼 결과물을 생성하기 위해서 Model로 부터 정보를 얻어오고 이를 기반으로 프레젠테이션을 완성한다.
참고) MVC 모델 1
- Controller를 구체적으로 구현하지 않고, View와 Model로만 이뤄진 구조이다. JSP가 요청을 받으면 Model 영역을 선택해서 호출하는 구조로 View가 컨트롤러의 역활을 겸업하고 있다고 할 수 있다. 이 JSP가 클라이언트에게 보내줄 UI를 생성하므로 View 역활을 수행한다.
MVC 모델 2구조가 일반적인 MVC패턴 구조이다.
@PostMapping("/items/Book/{itemId}/edit")
public String updateBookItem(
@PathVariable("itemId") Long itemId,
@ModelAttribute("form") @Valid BookForm form,
BindingResult binding) {
if (binding.hasErrors()) {
return "items/book/updateBookForm";
}
itemService.updateItem(itemId, form.getName(), form.getPrice(), form.getStockQuantity());
return "redirect:/items";
}
DispatcherServlet
HandlerMapping
@RequestMapping("/")
public String home() {
log.info("home controller");
return "home";
}
home.html
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head th:replace="fragments/header :: header">
<title>Groom Book-store</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<div class="container">
<div th:replace="fragments/bodyHeader :: bodyHeader" />
<div class="jumbotron">
<h1>HELLO</h1>
</div>
<div th:replace="fragments/footer :: footer" />
</div>
</body>
</html>