2~3. Spring View 환경 설정하기

    아래 내용은 처음 강의를 들은 내용으로 정확하지 않을 수 있다. 정확한 내용을 알게 되면, 아래 내용은 업데이트가 될 것이다.

    1. WelCome Page 만들기(정적 페이지)


    resources - static 페이지에 "index.html" 파일을 만든다. "index.html" 파일은 자동으로 웰컴 페이지가 된다. index.html은 아래와 같이 구성할 수 있다. 아래 파일을 만들고 Run을 한 뒤, localhost:8080으로 접근해본다. 

    <!DOCTYPE HTML>
    <html>
    <head>
        <title>Hello</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    </head>
    <body>
    Hello
    <a href="/hello">hello</a>
    </body>
    </html>

    접근하면 아래와 같은 Welcome page가 뜨는 것을 알 수 있다. 

     

    간략한 MVC 패턴을 활용해보기


    1. Controller 만들기

    • 컨트롤러는 웹 어플리케이션의 첫번째 진입 지점이다.
    •  Java Project 아래에 "controller" 패키지를 생성한다. 패키지 아래에 "HelloController" 클래스를 생성한다. 클래스 내에는 다음과 같은 코드를 작성한다. 
    package hello.hellospring.controller;
    import org.springframework.stereotype.Controller;
    import org.springframework.ui.Model;
    import org.springframework.web.bind.annotation.GetMapping;
    
    
    // Controller를 사용할 때는, 어노테이션을 꼭 달아준다.
    @Controller
    public class HelloController {
    
        // 웹에서 '/hello'라는 명령어가 들어오면 Mapping 시켜준다.
        @GetMapping("hello")
        public String hello(Model model){
            // Spring에서 Model을 만들어서 넘겨준다.
            // Model이 {key, value} 형태로 데이터를 만들어서 넘겨준다.
            // return되는 string은 View Resolver가 자동으로 대응되는 값을 찾는다.
            // 'resources:template' + {viewName} + '.html'이 Default임.
            model.addAttribute("data", "hello!!");
            return "hello";
    
        }
    
    
    }
    • Spring에서 Controller를 사용할 때는 반드시 어노테이션으로 'Controller'를 달아줘야한다.
    • GetMapping 어노테이션은 웹서버에 '/문자'가 들어오게 되면, 그 문자와 Mapping 되는 메서드라고 표현해준다.
    • hello 메서드는 스프링이 만들어준 모델에 'key : value' 형태로 Attributer를 추가해서 던져준다. 던져누는 대상은 'hello'라는 이름을 가지는 html 파일이다. 이는 ViewResolver에 의해서 동작되는데, ViewResolver의 default 탐색 방식은 "resources:template" + {viewName} + '.html'인 곳을 찾는다. 즉, 이름이 똑같은 파일을 찾는다.

     

    2. View 만들기

    • resources - template에 'hello.html'을 만든다. 코드 내용은 아래와 같다. 아래 내용은 thymeleaf라는 template 엔진을 사용하여, html을 구성하겠다는 것을 의미한다. 여기서 ${data}에는 model의 "data"라는 key에 저장된 value가 들어간다. 
    <!DOCTYPE HTML>
    <html xmlns:th="http://www.thymeleaf.org">
    <head>
        <title>Hello</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    </head>
    <body>
    <p th:text="'안녕하세요. ' + ${data}" >안녕하세요. 손님</p>
    </body>
    </html>

     

    3. 위의 MVC 동작 방식

     

    댓글

    Designed by JB FACTORY