<정적페이지 실습>
스프링 부트는 resources/static/ 경로에 index.html 파일을 만들면 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 spring!!
</body>
</html>
작성 후 메인메서드 실행후 localhost:8080 으로 들어가면
다음과 같은 페이지가 생성됨.
*****스프링은 엄청나게 거대해서 필요한것을 찾아가는 능력이 중요함. (spring.io 사이트에서 자신의 버전에 맞게 찾아야함.)****
지금 한 것은 정적인 html을 웹서버가 클라이언트에게 그냥 넘겨준 것. 템플릿 엔진을 사용해서 웹페이지의 변화를 줄 수 있음 (블로그에서는 thymeleaf 템플릿 엔진을 사용)
<템플릿엔진 실습>
컨트롤러: 웹어플리케이션에서 첫번째 진입점이다.
다음과 같은 경로에 컨트롤러라는 패키지 밑에 자바파일을 생성.
자바파일에
package tengnara.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") //hello라는 url로 들어오면 해당 메서드 실행
public String hello(Model model) {
model.addAttribute("data", "hello!!");//data라는 이름을 찾아 hello!! 를 삽입해라
return "hello";
}
}
와 같이 입력(Model은 MVC(모델,뷰,컨트롤러)패턴 중 모델에 해당)
해당 경로에 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>
2라인을 적어 줌으로써 html에서 thymeleaf 템플릿엔진 문법을 사용할 수 있음.
${data} 부분에 위에서 작성한 model의 hello!!가 전달됨.
여기까지 작성하고 localhost:8080/hello 로 접속하면
다음과 같은 웹페이지(메서드가 전달한 결과) 를 볼 수 있음.
thymeleaf 동작과정
1. 웹 브라이저에서 /hello url로 접속
2. 톰켓 내장 서버가 @GetMapping("hello")된 컨트롤러를 찾아 메서드 실행
3. model(스프링이 만들어줌)에 name과 value를 저장(data:hello!!)
4. 메서드 리턴 값이 "hello" 일때 뷰 리졸버가 resources/templates/hello.html을 찾아 model을 넘기면서 랜더링함.( ${data} (model에서 name 값)라는 곳에 "hello!!"(value)를 랜더링 후 클라이언트에게 전송)
<빌드 및 실행하기>
cmd창에서
해당 파일들이 있는 폴더로 이동.
해당 명령어 작성 하면 빌드완료
build\libs 폴더에 jar 파일이 생성된 것을 볼 수 있음.
해당 파일을 cmd 에서 java -jar hello-spring-0.0.1-SNAPSHOT.jar 하면 실행됨. (인텔리j에서 서버구동을 안해도.)
(정상구동시 cmd 모습)
구동하고 locallhost:8080 으로 들어가면 정상적으로 웹페이지가 동작함.
***서버 배포시, jar파일만 서버에서 넣어서 실행하면 된다. (서버에서 스프링이 실행됨.)***
'SPRING' 카테고리의 다른 글
[SPRING] 스프링구조 - 의존관계 (0) | 2021.12.14 |
---|---|
[SPRING] 프로젝트 생성 (0) | 2021.12.14 |