[스프링 입문] 스프링 웹 개발 기초-②MVC와 템플릿 엔진

enxnong·2023년 4월 18일
0

Spring

목록 보기
7/26

김영한님의 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술을 보면서 공부한 내용입니다.

1. MVC란?

MVC란 Model, View, Controller를 의미한다. 애플리케이션이나 프로젝트를 구성할 때 그 구성 요소를 세가지 역할로 구분한 것이다.

1) View : 사용자가 보는 화면으로 text, inputbox, textarea가 있는 인터페이스 요소를 나타낸다. 즉, 데이터를 화면에 보여주는 담당이다.

2) Model : 애플리케이션의 데이터를 나타낸다. 그래서 View는 Model의 데이터를 랜더링 하여 사용한다.

3) Controller : 앞에서 말한 화면(View)과 데이터(Model)을 연결하는 역할을 한다. 사용자가 화면에서 데이터를 활용해 조회하고 수정하고 저장하는 등 이러한 이벤트들을 처리한다.

💡 즉, View는 화면을 그리는 것에 집중하고, Model,Controller는 비즈니스 로직 또는 내부로직 처리에 집중한다.

2. 실행 방법

간단한 구현을 통해 어떤 방식으로 돌아가는지 확인해보자.

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**]

💡 GET방식을 통해 name에 요청된 값을 넣어야되는데 안넣어서 생긴 오류이다.

4) parameter값을 넘겨서 다시 실행해본다.
→ paramter값을 넘겨준 후에 제대로 실행된 것을 확인할 수 있다.

3. 원리 설명

  1. 웹 브라우저에서 localhost:8080/hello-mvc 요청한다.
  2. 스프링 부트 내장 톰캣 서버가 스프링 컨테이너의 컨트롤러에서 hello-mvc가 매핑되어있는지 확인한 후 매핑되어있는 메서드를 호출한다.
    → hello-template로 리턴, moldel(name(키):Spring(값))
  3. 스프링 부트의 ViewResolver가 리턴값인 hello-template.html을 찾아서 Thymeleaf 템플릿 엔진으로 넘긴다.
  4. Thymeleaf 템플릿 엔진이 변환을 해서 html을 반환한다.
profile
높은 곳을 향해서

0개의 댓글