해당 글은 김영환 자바스프링 입문을 보고 요약 필기한 글입니다.
1일차에 localhost:8080을 실행하면 에러페이지가 발생한것을 기억할 수 있다.
그 이유가 main에 아무것도 없기 때문인데, 이번에 에러대신 웰컴페이지를 만들어서 띄워보자
Welcome Page 만들기
src폴더에 resources에 들어가서 static 폴더에 새파일을 만들고 이름을 index.html로 만들어준다.
이후 index.html에 아래 코드를 넣어준다.
<!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>
이후 파일을 실행해서 localhost에 들어가면
이런식으로 작동한다면 웰컴 페이지가 잘 작성되었다는것이다.
Spring Boot가 제공하는 Welcome Page 기능
Spring이란? → 엔터프라이즈용 Java 애플리케이션 개발을 편하게 할 수 있게 해주는 오픈소스 경량급 애플리케이션 프레임워크라고 생각하면 된다.
엥? 프레임 워크가 뭐에요? → 어떠한 목적을 쉽게 달성할 수 있도록 해당 목적과 관련된 코드의 뼈대를 미리 만들어둔 것을 의미한다.
Spring을 사용하기 위해서는 여러가지 기능을 사용하기 위한 세팅이 필요하다.
이 과정에서 진입 장벽이 있기 때문에 초심자의 경우에는 매우 어렵게 느껴진다.
이러한 문제점을 해결하기 위해서 Spring Boot가 등장했고, Spring Boot를 사용해 Spring을 사용하기 쉬워졌다.
Spring Boot 사용방법
- 스프링 부트를 사용하기 위해서 우선 https://spring.io/ 사이트에 이동한다.
- Projects > Spring Boot > Learn으로 이동한다.
- Spring Boot 프로젝트와 같은 버전의 Reference Doc. 으로 이동한다.
- 이곳에서 내가 원하는 기능을 검색하면 된다.
thymeleaf 템플릿 엔진
thymeleaf의 공식 사이트 주소 : https://www.thymeleaf.org/
Spring Boot 공식 가이드 : https://spring.io/guides/gs/serving-web-content/
Controller 사용해보기
화면이 동작되도록 해보자.
새로운 package를 만들어주고, controller라는 이름을 가진 java class도 만들어준다.
이후 만들어준 class파일에 Controller 어노테이션을 적어줘야한다.
아래 코드를 옮겨 적어주면 된다.
package study.studyspring.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class StudyController {
@GetMapping("hello")
public String hello(Model model) {
model.addAttribute("data", "hello!!");
return "hello";
}
}
맵 어플리케이션에서 hello가 들어오면 GetMapping을 실행한다.
Model은 MVC(Model View Controller)에서의 Model이다.
model.addAttribute("data", "hello!!");
hello라고 data를 넘길거라고 작성한다.
이후 templates에 hello.html을 만들어준다.
heml코드는 아래를 복사하면 된다.
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Hello</title>
<meata http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<p th:text="'안녕하세요. ' + ${data}" >안녕하세요. 손님</p>
</body>
</html>
xmlns에 th에 타임리프를 불러왔기 때문에 타임리프를 사용할 수 있다.
<p th:text="'안녕하세요. ' + ${data}" >안녕하세요. 손님</p>
위 코드에서 data부분이 아까 작성한 java class에서
model.addAttribute("data", "hello!!");
“hello!!”가 해당한다.
이후 다시 localhost를 실행해서 hello를 클릭하거나 링크에 /hello를 추가로 적으면 아래와 같은 화면이 나온다.
이후 페이지 소스보기를 하면 아래와 같은 화면이 나온다.
${data} 부분이 hello!!로 바뀐게 확인된다.
자세한 설명
아까 index.html에 넣은 코드를 보면안에
<a href="/hello">hello</a>
이 있는게 확인이 된다.
이 코드는 hello를 누르면 /hello 주소로 들어가지게 된다.
이는 곧 아까 만든 java class로 만든 Controller에 GetMapping에 hello가 있기 때문에 아래 코드가 실행된다.
@GetMapping("hello")
public String hello(Model model) {
model.addAttribute("data", "hello!!");
return "hello";
}
}
위에 말했지만 data를 hello!!로 return할 대상에 전달하게 된다.
이 return “hello”는 만들어둔 hello.html을 탐색하여 해당 값에 data를 넘겨주게 된다.
- 엥? 이게 어떻게 자동으로 되는건가요?
- → 스프링 부트 템플릿 엔진은 기본적으로 viewName 매핑이 된다.
⇒ ’resoruces:templates/’ + {ViewName} + ‘.html’ 파일을 자동으로 매핑
최종적으로는 ${data}에 hello!!가 전해지게 되는것이다.
'개인 공부 > 인프런' 카테고리의 다른 글
[JavaSpring] TestCase 작성 (0) | 2023.03.20 |
---|---|
[Spring] 회원관리 예제 만들어보기 (0) | 2023.03.17 |
[JavaSpring] 기본 세팅하기 (0) | 2023.03.16 |
[JavaSpring] 빌드하고 실행하기, 정적 컨텐츠, MVC (0) | 2023.03.16 |
[JavaSpring] 라이브러리 살펴보기 (0) | 2023.03.10 |