저번시간에는 서버가 켜지는 화면을 봤다.
오늘부터는 동작하는 화면을 실제 만들어보고 빌드하고 실행하는 것까지 진행해보자 !
간단하게 동작화면을 만들기 위해서 아래와 같이 파일을 만들어줬다.
📗 HelloController
package hello.helloSpring.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";
}
}
📗 Templates hello.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>
💻 출력 화면
엥? 왜 이렇게 되는거지 ? return hello를 해줬는데 어떻게 hello.html이 화면에 렌더링 되었을까.... 매우 신기...
그 이유는 아래 이미지를 보면 쉽게 이해할 수 있다.
컨트롤러에서 리턴 값으로 문자를 반환하면 ViewResolver 가 화면을 찾아서 처리하는데
스프링부트는 기본 viewName매핑해서 resources:templates/ +{ViewName}+ .html에 매핑이 되는 것이다.
그럼 아까 hello.html에 작성한'Thymeleaf 는 뭘까?'에 대한 궁금증을 간단하게 해소해 보자.
1. Thymeleaf 란 ?
'템플릿 엔진'의 일종. html태그에 속성을 추가해 페이지에 동적으로 화면을 만들어주는 역할이라고 한다.
1-1. Thymeleaf 사용방법
타임리프를 사용하기 위해서는 라이브러리에 아래와 같이 추가해야 한다.
하지만 나는 처음 세팅했을때 타임리프 세팅을 해놨기 때문에 따로 설정하지 않았다.
만약에 나중에 타임리프를 설정한다면, build.gradle에 dependencies에 아래 한 줄을 추가하면 된다.
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
또한 html 태그에도 아래와 같이 한줄 추가하면 된다.
<html xmlns:th="http://www.thymeleaf.org">
그렇다면 실제로 해당 프로젝트를 빌드하고 실행해 보자!
(진짜 여기서 엄청 해맸는데... 정말 이것저것 다 찾아보고... 해결했다.. )
나도 다른사람에게 구세주 같은 사람이 되길... 바라며 포스팅해보겠다!
1️⃣ cmd 창을 켜고 스프링 프로젝트가 있는 폴더를 작성한다.
cd + 프로젝트 경로 붙여넣기
(설마 + 넣는 사람 없겠죠...?)
2️⃣ gradlew.bat 작성하기
3️⃣ gradlew build 작성하기
4️⃣ cd build 작성하기 → dir 작성하기
5️⃣ cd libs 작성하기 → dir 작성하기
자바 실행 파일인 .jar가 있다 이제 다 왔으니 실행해 보자!
6️⃣ java -jar 파일명 작성
드디어 성공😎
( 만약 안되는 사람이 있다면 8080 포트를 이미 사용하고 있어 안되니까 서버 끄고 다시 도전해 보시길! )
'ON > 실습' 카테고리의 다른 글
[Spring Boot] 스프링 웹 개발 기초 ② - MVC와 템플릿 엔진 (1) | 2023.11.05 |
---|---|
[Spring Boot] 스프링 웹 개발 기초 ① - 정적 컨텐츠 (0) | 2023.11.04 |
[Spring Boot] 스프링 부트 프로젝트 쉽게 생성하기 ① (0) | 2023.11.02 |
[Spring Boot] 스프링 부트와 스프링의 차이점 (1) | 2023.11.01 |
[ 오류 ] Could not set parameters for mapping 부적합한 열 유형 해결하기 (0) | 2023.08.24 |