프로그래밍 경험이 있다면 MVC, MVVM 같은 키워드를 많이 들어봤을 것이다. 이러한 키워드는 소프트웨어 설계와 관련된 디자인 패턴이다. 다시 말해 소프트웨어 공학에서의 설계 패턴이라고 이해하면 된다.
데이터를 가진 객체를 모델이라고 한다. 데이터는 내부의 상태에 대한 정보를 가질 수도 있고, 모델을 표현하는 이름 속성으로 가질 수 있습니다. 모델의 상태에 변화가 있을 때 컨트롤러와 뷰에 이를 통보한다. 이와 같은 통보에 의해 뷰는 최신의 결과를 보여줄 수 있고, 컨트롤러는 모델의 변화에 따른 비즈니스 로직, 내부 로직을 수행할 수 있다.
View는 화면을 그리는데 필요한 HTML/CSS/Javascript를 모아둔 컨테이너이다. 사용자가 볼 결과물을 생성하기 위해 모델로부터 정보를 얻어온다.
사용자가 접근한 URL에 따라 사용자의 요청을 파악한 후에 그에 맞는 데이터를 Model을 의뢰(필요에 따라 가공)하고 데이터를 View에 반영해서 사용자에게 알려준다.
@RequsetParam을 통해 쿼리 파라미터를 넘겨받는 컨트롤러(helloMvc 메서드)를 작성했다.
그리고 넘겨받은 쿼리 파라미터를 Model에 담고 있고, hello-template을 리턴하고 있다.
public class HelloController {
@GetMapping("hello-mvc")
public String helloMvc(@RequestParam("name") String name, Model model){
model.addAttribute("name", name);
return "hello-template";
}
}
hello-template에서는 컨트롤러로부터 넘겨받은 Model을 동적 페이지 렌더링에 사용하고 있다.
<html xmlns:th="http://www.thymeleaf.org">
<body>
<p th:text="'hello ' + ${name}">hello! empty</p>
</body>
</html>