[#6] Spring 파헤치기 : MVC와 템플릿 엔진
앞서 핸들러와 템플릿 엔진을 조금 알아봤지만, 이번에 좀 더 알아보도록 하자.
MVC란?
: Model, View, Controller의 줄임말이다.
Model은 데이터와 정보를 나타낸다.
View는 화면을 그려내는부분, 즉 사용자 인터페이스요소를 나타낸다.
Controller는 Model과 View를 연결해주는 다리역할이라고 보면된다.
이렇게 나눠서 작업을 하는이유는 만약 분리가 안되어있다면 나중에 유지보수를 하기위해선 전체를 들여다봐야 하기때문에 각각의 역할에 따라 작업을 진행하는것이다.
HelloController에 다음과 같은 Controller를 추가하자.
@GetMapping("hello-mvc")
public String helloMvc(@RequestParam("name") String name, Model model) {
model.addAttribute("name",name);
return "hello-template";
}
이 Controller는 전에 만들었던 hello Controller에 name이라는 parameter를 추가한것이다.
name 값을 받아와서 model객체를 통해 "name"이란 이름으로 넘어간다.
그럼 이제 return값의 "hello-template"를 templates 파일 아래에 html형식으로 만들어주자.
<html xmlns:th="http://www.thymeleaf.org">
<body>
<p th:text="'hello ' + ${name}">hello! empty</p>
</body>
</html>
보면 p태그 안에 hello! empty 가 들어가있는데 이건 thymeleaf를 통해 서버연결없이 바로 html을 실행시켰을 때 잘 뜨는지 확인하기위해 들어가있다. 서버와 연동해서 실행하면 " 'hello ' + ${name}" 으로 변경되어 name값을 받아 나타낸다.
그럼 서버실행 후 URL에 http://localhost:8080/hello-mvc 를 입력해보자.
그럼 이와같이 에러페이지가 뜨게된다.
에러메세지를 확인해보자.
Required request parameter 'name' for method parameter type String is not present
이런 메세지가 뜨는데 살펴보면 name 파라미터가 존재하지않는다는 내용이다.
따라서, URL에 파라미터값을 입력해서 실행해야한다.
이렇게 ? 뒤에 파라미터값을 넣어주면 해당파라미터를 받아와 밑에 뿌려주는걸 확인 할 수 있다!