* 인프런 김영한님의 '스프링 입문' 강의를 듣고 작성한 내용입니다! (https://inf.run/txXC)
* IDE : IntelliJ (Eclipase 도 가능하지만 인텔리제이 추천!) (intelliJ 설치 참고 블로그 : https://goddaehee.tistory.com/195)
* Java 11 설치 (Windows Java 11 설치 참고 블로그 : https://programmer-ririhan.tistory.com/118)
* spring 환경설정은 이전 포스트를 참고해주세요!
2021.06.29 - [개발/Spring] - [스프링 입문] 스프링 프로젝트 환경설정
* Thymleaf
이전에 프로젝트 zip 파일을 생성할 때, dependencies에 thymleaf를 추가했었는데, 이것은 템플릿 엔진이다
(템플릿 엔진이란 ? https://show-me-the-money.tistory.com/56)
간단하게 설명해서 템플릿 엔진이란 템플릿 양식 + 모델 이 두가지를 합해서 결과문서를 내는 것 입니다. 같은 페이지 안에서 데이터가 바뀌는 경우가 많은데, 이때 전체 페이지를 다시 로드하는 것은 비효율 적이므로 이것을 효율적으로 처리해주는 것이 템플릿 엔진입니다.
1. Welcome page 만들기
* 어떻게 Welcome page를 생성하지? => spring.io 공식문서에서 확인 가능
* 이 링크에서 welcome page를 만들려면 index.html을 생성해야 한다는 것을 알 수 있다.
* 파일 경로 : src-main-resources-static-index.html
* index.html을 생성하면, 자동으로 해당 파일이 spring boot의 welcome page(localhost:8080에 들어가면 나오는 페이지. path가 /)로 설정됩니다.
* 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>
2. Controller 만들기
* 파일 경로 : src-main-java-hello.hellospring-controller package 생성-HelloController Class 생성
* HelloController.java 코드
@Controller
public class HelloController {
@GetMapping("hello")
public String hello(Model model) {
model.addAttribute("data", "hello!!");
return "hello";
}
}
* Controller annotation 붙이기(@Controller)
* @GetMapping("hello") : /hello url에 Get요청을 하면 밑의 로직으로 동작해라!
* model.addAttribute에서 data는 key값, hello!!는 value이다
* return "hello" 를 해주면 resources-template-hello.html을 return 하라는 뜻이다
* 즉 localhost:8080/hello 에 접속하면(Get) hello.html을 반환하라는 동작을 짠 코드이다
3. hello.html 만들기
* 파일 경로 : src-main-java-resources-templates-hello.html
* 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>
* 여기서 ${data}로 데이터를 넣어주기때문에 템플릿 엔진인 thymleaf를 사용한다
* html 태그의 xmlns:th="http://ww.thymleaf.org"가 타임리프를 사용하겠다는 뜻이다
* controller에서 data:hello!! 로 attribute를 세팅해줬기 때문에 ${data}안에는 hello!! 가 들어가서 "안녕하세요. hello!!" 가 뜨게 된다
* "안녕하세요. 손님" 은 타임리프를 적용안하고 그냥 로컬에서 html파일을 열었을 때 뜨는 메시지이다. 타임리프가 적용되면 p태그의 th:text 부분이 뜨게된다
* ViewResolver
- controller에서 리턴값으로 문자를 반환하면(위에서 "hello" 반환) viewResolver가 화면을 찾아서 처리한다
- 스프링부트 기본 viewName 매핑 : templates/viewName.html
'개발 > Spring' 카테고리의 다른 글
[스프링 입문] 스프링 회원관리 예제 - 2. 회원 도메인, 레포지토리 만들기 (0) | 2021.06.29 |
---|---|
[스프링 입문] 스프링 회원관리 예제 - 1. 비즈니스 요구사항 정리 (0) | 2021.06.29 |
[스프링 입문] 스프링 정적컨텐츠, MVC, API (0) | 2021.06.29 |
[스프링 입문] 스프링 빌드하고 실행하기 (0) | 2021.06.29 |
[스프링 입문] 스프링 프로젝트 환경설정 (0) | 2021.06.29 |