본문 바로가기
Spring_inflearn/입문

[Spring] inflearn 스프링 입문 - 프로젝트 환경설정 4

by clolee 2022. 8. 28.

 

View 환경설정

 

1. Welcome Page 만들기

src > main > resources > static 에서 New > File 클릭

 

index.html 파일 생성 (Welcome Page)

 

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:8080 에 접속

마우스 우클릭 후 페이지 소스 보기를 클릭하면 위에서 적은 html 코드 확인 가능

spring 많은 기능 가짐. 자바 웹 애플리케이션 개발 관련 전반의 생태계 제공. 방대함. 필요한 것 찾는 능력 중요!

spring boot는 spring 생태계를 감싸서 편리하게 사용할 수 있도록 도와줌

 

2. Reference Documentation 검색

 

https://spring.io/

project > Spring boot > learn > Reference Doc.

 

spring boot reference

https://docs.spring.io/spring-boot/docs/current/reference/html/

 

welcome page

https://docs.spring.io/spring-boot/docs/current/reference/html/web.html#web.servlet.spring-mvc.welcome-page

 

 

 

위 코드의 index.html은 정적 페이지.

적어놓은 파일을 웹서버가 웹브라우저에 넘겨주는 것.

 

템플릿엔진을 사용하면 동적페이지 구현 가능

 

3. thymeleaf 템플릿엔진

 

thymeleaf 공식사이트

https://www.thymeleaf.org/

 

스프링 공식 튜토리얼

https://spring.io/guides/gs/serving-web-content/

 

스프링부트 메뉴얼

https://docs.spring.io/spring-boot/docs/2.3.1.RELEASE/reference/ html/spring-boot-features.html#boot-features-spring-mvc-template-engines

 

 

웹 애플리케이션 진입점 : Controller

src > main > java/hello/hellospring/ 위치에 controller 패키지 만들기

 

controller/HelloController.java 만들기

@Controller 어노테이션 적어줘야 함

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 {
	/**
	 * 웹 어플리케이션에서 /hello 로 들어오면 아래 메소드 호출해줌
	 */
	@GetMapping("hello")
	public String hello(Model model) {
		model.addAttribute("data", "hello!");
		return "hello";
	}
}

 

 

resources/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>

 

thymeleaf 템플릿 엔진 xmlns 스키마로 선언

thymeleaf 문법 쓸 수 있음

<html xmlns:th="http://www.thymeleaf.org">

 

p 태그의 data 가 value 인 hello!로 치환됨.

<p th:text="'안녕하세요. ' + ${data}" >안녕하세요. 손님</p>

controller 의 hello method의 key : data , value : hello!

# model.addAttribute(key : "data", value : "hello!");

 

application main method 실행

localhost:8080/hello 접속

 

웹브라우저에서 localhost:8080/hello 를 던지면 톰캣서버 (스프링부트는 톰캣서버를 내장함) 에서 받아서 스프링에 물어봄

helloController 에 있는 GetMapping("hello") hello url에 매칭

* http url 입력 후 엔터 : get방식

Controller 에 있는 hello method 실행 됨.

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

스프링이 model 만들어 넣어줌

model에 addAttribute 로 key는 data, value는 hello!

value는 바뀔 수 있음

return "hello"; 에서 hello는 resources/templates/hello.html 의 이름과 같음.

 

return "hello"; 의미는

resources/templates/hello.html 찾아서 렌더링 하라. 화면을 실행.

data는 model에 화면을 넘김

스프링이 templates/hello.html 찾아서 Thymeleaf 템플릿 엔진 처리

컨트롤러에서 리턴 값으로 문자를 반환하면 viewResolver가 화면을 찾아서 처리.

 

스프링 부트 템플릿 엔진은 기본적으로 viewName 매핑.

resources:templates/ +{ViewName}+ .html 찾아서 열림

 

data : model의 key 값

<p th:text="'안녕하세요. ' + ${data}" >안녕하세요. 손님</p>

                                                                ↓

<p th:text="'안녕하세요. ' + ${hello!}" >안녕하세요. 손님</p>

 

Controller 의 hello method 에서 model의 value를 아래와 같이 변경하면 

 

resources/templates/hello.html 화면이 보여지는 localhost:8080/hello 에서도 변경된 것을 확인할 수 있다.

 

 

빌드하고 실행하기

intellij ide 가 아닌 콘솔에서 실행해보기

./gradlew build

cd build
cd libs
java -jar hello-spring-0.0.1-SNAPSHOT.jar // 자바 실행

 

localhost:8080 실행

 

서버 배포할 때는. jar 파일만 복사해서 서버에 넣어주고 

java -jar xx.jar 실행하면 서버에서 스프링이 동작.

 

 

실행 안될 때 

./gradlew clean
or
./gradlew clean build

후 진행. build 폴더가 없어짐.

댓글