article thumbnail image
Published 2021. 7. 15. 14:19
728x90


뷰 탬플릿(View Templates)

만약 사용자 수에 따라 수많은 웹페이지를 만들어 낸다면 사용자가 가입할 때마다 새로운 페이지를 만들어야 해서 상당히 고통스러울 것이다. 이러한 괴로움으로부터 벗어나기 위한 기술이 뷰 탬플릿이다.

뷰 탬플릿이란 화면을 담당하는 기술이다. 웹페이지를 하나의 틀로 만들고 이곳에 변수를 삽입하게 한다. 다시 말해 틀이 되는 페이지가 변수의 값에 따라서 수많은 페이지로 바뀔 수 있다는 것이다.

틀에 변수의 값에 따라 내용이 들어간다

 

 

MVC 패턴

MVC패턴이란, 일종의 역할 분담이다. 프로그램에서 데이터는 모델(Model), 화면은 뷰(View),

처리는 컨트롤러(Controller) 가 나누어 담당한다. 

 

이러한 역할 분담인 MVC 패턴, 이는 OOP(객체지향프로그래밍)과도 연관이 있다. 객체별 역할을 나누면, 보다 깔끔한 

코드 작성 및 관리에 좋다. 

 

 

 

컨트롤러

 

1) 파일생성 : FirstController

 

 

2) 코드작성

 

package com.example.FirstProject.controller;

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


@Controller //컨트롤러라고 선언!
public class FirstController {

    @GetMapping("/hi") //URL 요청 연결
    public String niceToMeetYou() {
        return "greetings";  //templates 안에 greetings.mustache 찾아서 브라우저로 전송!
    }
}

 

3) 파일 생성 (여기선 mustache를 이용)

 

 

4) 코드 작성

<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
  <h1>{{username}}님 반갑습니다.</h1>
</body>
</html>

 

 

모델 객체

5) 데이터를 뷰로 전달

package com.example.FirstProject.controller;

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

@Controller //컨트롤러라고 선언!
public class FirstController {

    @GetMapping("/hi") //URL 요청 연결
    public String niceToMeetYou(Model model) {
        model.addAttribute("username", "홍길동"); //username을 키 "홍길동"을 value로 생각하면 편하다
        return "greetings";  //templates 안에 greetings.mustache 찾아서 브라우저로 전송!
    }
}

 

결과 확인

 

6) 브라우저 접속

 

 

(위 내용은 홍팍의 스프링 강의를 보고 정리한 글입니다)

'Spring' 카테고리의 다른 글

JPA 레포지토리, DB에 저장하기  (0) 2021.07.20
폼 (form) 데이터 주고 받기  (0) 2021.07.16
뷰 레이아웃  (0) 2021.07.16
정적컨텐츠  (0) 2021.07.13
Gradle 라이브러리 및 View 환경설정  (0) 2021.07.12
복사했습니다!