김영한님의 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술을 보면서 공부한 내용입니다.
MVC란 Model, View, Controller를 의미한다. 애플리케이션이나 프로젝트를 구성할 때 그 구성 요소를 세가지 역할로 구분한 것이다.
1) View : 사용자가 보는 화면으로 text, inputbox, textarea가 있는 인터페이스 요소를 나타낸다. 즉, 데이터를 화면에 보여주는 담당이다.
2) Model : 애플리케이션의 데이터를 나타낸다. 그래서 View는 Model의 데이터를 랜더링 하여 사용한다.
3) Controller : 앞에서 말한 화면(View)과 데이터(Model)을 연결하는 역할을 한다. 사용자가 화면에서 데이터를 활용해 조회하고 수정하고 저장하는 등 이러한 이벤트들을 처리한다.
💡 즉, View는 화면을 그리는 것에 집중하고, Model,Controller는 비즈니스 로직 또는 내부로직 처리에 집중한다.간단한 구현을 통해 어떤 방식으로 돌아가는지 확인해보자.
1) Controller에 다음과 같은 코드를 작성한다
@GetMapping("hello-mvc")
public String helloMvc(@RequestParam("name") String value, Model model){
// 사용자에게 value값을 직적 받는 GET방식
// 키 : name, 값 : value
model.addAttribute("name", value);
return "hello-template";
}
2) resources/templates에 return값과 동일하게 hello-template.html을 생성한 후 코드를 작성한다.
<html xmlns:th="http://www.thymeleaf.org">
<body>
<p th:text="'hello ' + ${name}">hello! empty</p>
</body>
</html>
3) url에 ‘localhost:포트번호’ + hello-mvc를 작성하여 실행한다.
하지만 오류가 발생했다.
오류의 내용을 살펴보면
2023-01-01 19:43:19.405 WARN 24608 --- [nio-9090-exec-1] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.bind.MissingServletRequestParameterException: **Required request parameter 'name' for method parameter type String is not present**]4) parameter값을 넘겨서 다시 실행해본다.
→ paramter값을 넘겨준 후에 제대로 실행된 것을 확인할 수 있다.