스프링/스프링 입문 - 김영한

5. 스프링 웹 개발 기초 ( MVC와 템플릿 엔진 )

서견 2023. 1. 1. 01:11

MVC : Model , View , Controller 

 

- 과거에는 View 와 Controller 가 구분이 안됐음. (과거의 JSP, Model 1 방식)

- 역할을 확실히 나누어 View 는 화면을 그리는데 최선을 다해야 하고 

- Controller, Model은 비즈니스 로직 등 내부적인 일에 집중해야함.

 

HelloController.java

package hello.hellospring.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;

@Controller
public class HelloController {

    @GetMapping("hello")
    public String hello(Model model){
        model.addAttribute("data","HIsadasasdadasddasdasdHI!!");

        return "hello";


    }

    @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 파일을 열어 보면 hello! empty가 보인다

 

- 타임리프의 장점으로 그냥 열어보더라도 무언가의 껍데기를 볼 수 있다

 

 

http://localhost:8080/hello-mvc  접속시 에러 발생

 

오류 메세지 :

WARN 16500 --- [nio-8080exec2] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved[org.springframework.web.bind.MissingServletRequestParameterException: Required request parameter 'name' for method parameter type String is not present]

 

name parameter가 없어서 에러가 뜸.

 

http://localhost:8080/hello-mvc?name=spring  값 입력 = 정상출력