ON/실습

[Spring Boot] 스프링 부트 프로젝트 생성 | cmd 창으로 빌드 및 실행 ②

박도비 2023. 11. 3. 20:57
728x90

저번시간에는 서버가 켜지는 화면을 봤다. 

오늘부터는 동작하는 화면을 실제 만들어보고 빌드하고 실행하는 것까지 진행해보자 ! 

 

간단하게 동작화면을 만들기 위해서 아래와 같이 파일을 만들어줬다. 

 

 

📗 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 포트를 이미 사용하고 있어 안되니까 서버 끄고 다시 도전해 보시길! ) 

728x90