본문 바로가기
공부 및 활동/스프링 강의 정리

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

by KChang 2021. 9. 20.

Model, Controller : 비즈니스 로직, 내부 처리하는데 집중해야 한다.

View : 화면 그리는 모든 영향

java/hello.hellospring/controller/HelloController

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","spring!!");
        return "hello";
    }

    @GetMapping("hello-mvc")
    public String helloMvc(@RequestParam("name") String name, Model model){
        model.addAttribute("name",name);
        return "hello-template";
    }
}

resources/templates/hello-template.html

<html xmlns:th="http://www.thymeleaf.org">
<body>
<p th:text="'hello ' + ${name}">hello! empty</p>
</body>
</html>

template이 정상적으로 작동할 시 hello! 자리에 'hello ' + ${name}으로 치환된다.

오류 발생

오류

Resolved [org.springframework.web.bind.MissingServletRequestParameterException: Required request parameter 'name' for method parameter type String is not present]

요청된 메소드 피라미터 String 타입 name이 본문에서 보이지 않는다.

spring

이럴 경우, java소스 "name"에 spring이 대입된다.

MVC, 템플릿 엔진 이미지

localhost:8080/hello-mvc가 실행되면, 내장 톰켓 서버를 거친다.

스프링 부트에서는 java/helloController에서 hello-template을 return 해준다.

key : name, value : spring

viewResolver : view를 찾아주고 templates을 연결시켜준다.

변환 된 HTML을 반환해준다.

  • 정적 컨텐츠 일 때는 변환되지 않은 값을 반환해주었다.

강의 주소 : https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%EC%9E%85%EB%AC%B8-%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8/dashboard

댓글