본문 바로가기
공부-프레임워크, 개발도구/Spring

index.html(메인), 서브 페이지 구현하기

by 령과 2021. 12. 26.

어느 서버를 배울 때나 index.html을 생성하는 것이 첫번째인 듯 하다.

Spring boot를 통해 프로젝트를 설정하면 src폴더 내에  main과 resources가 존재한다.

 

main은 서버내의 흐름을 구현하는 부분이 되는 듯 하다.

resources는 html등 페이지와 필요한 데이터들이 저장될 부분인 듯 하다.

 

resources에 index.html을 생성하고 다음 내용을 추가한다.

<!DOCTYPE HTML>
<html>
<head>
    <title>Hello</title>
</head>
<body>
Hello
<a href = "/hello">hello</a>
</body>
</html>

서버를 동작하고 localhost:8080에 접속해보면 다음과 같다.

hello를 클릭하면 해당 도메인/hello에 링크를 타는 것을 알 수 있는데 오류가 발생할 것이다.

Spring에서 Get ~/hello 요청을 받았을 때 처리를 구현해야 한다. 

 

메인 Application.java에 위치한 곳에 controller폴더를 만들고 해당 폴더 내에 자바파일을 생성한다.

해당 자바파일 이름이 HelloController.java라면 다음 내용을 채운다.

package hellospring.demo.controller;

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

@Controller
public class HelloController {
    @GetMapping("hello")
    public String hello (Model model) {
        model.addAttribute("data", "hello!!");
        return "hello";
    }

}

@Controller는 어노테이션이라고 알고 있는데 Spring에서 컨트롤러로 쓰인다고 알리는 역할을 한다.(?)

지우고 실행해봤더니 작동을 하지 않기에 필수인 듯하다.

 

해당 코드를 이해한 대로 서술해보면 Controller로 등록되고, GetMapping은 GET 신호를 catch한다.

~/hello 신호라면 아래 메소드를 호출하는데 model은 페이지로 전달할 값들을 저장하고 보내지는 역할을 할 것이다.

return은 resources/templates에서 관련 파일명을 기입한다. (대소문자 구분이 없는 듯 하다.)

 

templates폴더 내에 hello(혹은 return한 값을 가지는 이름).html을 생성하고 다음 내용을 추가한다.

<!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>

<html xmlns:th="http://www.thymeleaf.org"> 을 통해 thymeleaf 템플릿을 활용한다.

${data}는 model에서 data를 key로 하는 값으로 대체하겠다는 의미같다.

 

 

 

강의내용

'스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술' - 인프런 김영한 강사님

'공부-프레임워크, 개발도구 > Spring' 카테고리의 다른 글

웹 빌드, 배포방법  (0) 2021.12.26
스프링부트  (0) 2021.12.26

댓글