어느 서버를 배울 때나 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 |
댓글