MVC란 Model, View, Controller을 의미합니다.
과거에는 Controller와 View가 서로 분리되어있지 않았습니다. View에서 모든 것을 다 처리했습니다.
현재는 MVC 스타일로 많이 하는데 View는 화면을 그리는데 모든 역량을 집중해야 합니다. 그리고 Controller나 Model과 관련된 부분들은 비즈니스 로직과 관련이 있거나 내부적인 것을 처리하는데 집중해야 합니다.
그래서 요즘엔 Controller와 View를 쪼개는게 기본입니다. View는 화면과 관련된 일만 처리하고, Controller는 비즈니스 로직과 서버 뒷단에 관련된 것을 처리하며, Model에다가 화면에 필요한 것을 담아서 넘겨주는 MVC 패턴을 많이 사용합니다.
이번에는 좀 더 내용이 있는 Controller를 만들어 봅시다. HelloController에다가 하나 더 만듭니다.
@GetMapping("hello-mvc")
public String helloMvc(@RequestParam("name") String name, Model model) {
model.addAttribute("name", name);
return "hello-template";
}
그리고 hello-template.html을 만듭니다.
<html xmlns:th="<http://www.thymeleaf.org>">
<body>
<p th:text="'hello ' + ${name}">hello! empty</p>
</body>
</html>
타임리프 템플릿의 장점은 HTML을 작성하고 파일을 서버없이 열어도 껍데기를 볼 수 있습니다.
해당 HTML의 절대 경로를 복사하면 바로 볼 수 있습니다.
하지만 템플릿 엔진으로서 동작을 하게 되면 "'hello ' + ${name}"의 값으로 hello! empty가 치환이 됩니다.
서버를 실행해서 http://localhost:8080/hello-mvc에 들어가보면 에러가 발생합니다.
Required request parameter 'name' for method parameter type String is not present
에러 로그를 보면 name으로 뭔가 들어와야 한다고 합니다.