Spring Static Page
์คํ๋ง ๊ณต์ ๋ฌธ์์์๋ ๋ค์๊ณผ ๊ฐ์ด ์ค๋ช ํ๋ค.
Spring Boot supports both static and templated welcome pages. It first looks for an
index.html
file in the configured static content locations. If one is not found, it then looks for anindex
template. If either is found, it is automatically used as the welcome page of the application.This only acts as a fallback for actual index routes defined by the application. The ordering is defined by the order ofย
HandlerMapping
ย beans which is by default the following:
์ ์ , ํ ํ๋ฆฟํ๋ ์ฐ์ปด ํ์ด์ง๋ฅผ ๋ชจ๋ ์ง์ํ๋ค. ๋จผ์ , index.html ํ์ผ์ด resources/static ๋๋ ํ ๋ฆฌ์ ์์นํด ์๋์ง ํ์ธํ๊ณ , ์๋ ๊ฒฝ์ฐ์ index template(์์ง ์ข ๋ฅ์ ๋ฐ๋ผ ๋ค๋ฆ)์ ์ฐพ๊ฒ ๋๋ค. ํ๋๋ผ๋ ๋ฐ๊ฒฌ๋๋ฉด ๊ทธ๊ฒ ์ฐ์ปดํ์ด์ง๋ก ์๋ ๋ฑ๋ก์ด ๋๋ค.
๋น์ฐํ์ง๋ง ์ด๋ฐ ๋ฐฉ์๋ณด๋ค๋ ์ค์ index ๋ผ์ฐํฐ๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์ด ์ข๋ค. ์ด๋ฌํ ์์๋ HandlerMapping์ด๋ ๋น์ ๊ธฐ๋ณธ ๋ฑ๋ก๋์ด์๋ค๊ณ ๋ช ์๋์ด์๋ค.
Spring View Engine
Spring์์๋ ๋ค์ํ View Engine์ ์ง์ํ๋ค. ์ฌ๊ธฐ์ ์ฌ์ฉํ ์์ง์ ์ด๋ฆ์ Thymeleaf๋ก ๊ฐ๋จํ 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>
์ด๋ฐ ์ฝ๋๋ฅผ ์์ฑํ๋ฉด viewResolver๊ฐ ์๋ํ์ฌ Template Engine์๊ฒ ๋ฐ์ดํฐ์ HTML๋ก ๋ง๋ค๋ผ๋ ์์ฒญ์ ๋ณด๋ด๊ณ , ์ด๋ฅผ ์คํ๋ง ๋ถํธ๊ฐ ๋ณํํ๊ฒ ๋๋ค.
์คํํ๋ ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ๋ค.
package hello.hello_spring.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class HelloController {
/**
* thymeleaf ํ
ํ๋ฆฟ ์์ง์ ๋์์ํจ๋ค.
* ์์ฒญ -> ํฐ์บฃ ์๋ฒ (/hello ๋ผ์ฐํ
) -> ์คํ๋ง๋ถํธ helloController
* -> viewResolver(ํ
ํ๋ฆฟ ์์ง ์ฒ๋ฆฌ) -> html ๋ณํ -> ๋ฐํ
*
* ํจํด
* resources:templates/{ViewName}.html
* @param model
* @return
*/
@GetMapping("hello")
public String hello(Model model) {
model.addAttribute("data", "Hello!!");
return "hello";
}
}
Build, Distribute, and Handle Fallback
gradle์ ์คํ๋ง์ ๊ตฌ์ฑํ๋ ์ค์ ์ ๋ด๊ณ ์๋ค. ์ด๋ฅผ ํตํด ์ฐ๋ฆฐ ์คํ๋ง ํ์ผ์ ํ๋์ .jarํ์ผ๋ก ๋ง๋ค์ด ๋ง๊ป ๋ฐฐํฌํ ์ ์๋ค.
./gradlew build # ํ๋ก์ ํธ ๋น๋ํ๊ธฐ
ํด๋น ๋ช ๋ น์ ํตํด ๋ง๋ค์ด์ง .jarํ์ผ์ /build/libs์์ ์์นํ๋ค. Java ๊ฐ์๋จธ์ ์ด ์ค์น๋ ์ปดํจํฐ๋ผ๋ฉด ์ด๋์๋ ์คํ์ด ๊ฐ๋ฅํด์ง๋ ๊ฒ์ด๋ค.
java -jar <๋ง๋ค์ด์ง ํ์ผ ์ด๋ฆ> # ํด๋น ํ์ผ์ ๊ฐ๋
์คํ๋ง์ด ์คํ์ด ์์๋ ๊ฒ์ด๋ค.
./gradlew clean
๋ง์ฝ ์คํ๋์ง ์๋๋ค๋ฉด ์์ ์ฝ๋๋ฅผ ์คํํด๋ณด๋ฉด ํ๋ก์ ํธ ์บ์, ํ์ผ ๋ฑ์ด ์ ๋ถ ๋ ๋ผ๊ฐ์ ์ค๋ฅ ์ํฉ์์ ์๊ธดํ๊ฒ ์ฌ์ฉํ ์ ์๋ค.