개발일기
View 환경 설정 본문
localhost:8080으로 연결했을 때 에러페이지가 나왔었다. 이유는 아무것도 없기 때문에 당연히 에러페이지가 나온다.
지금부터 강의를 보면서 따라 만들 것은 Welcome page를 만들어 보는 것이다.
Spring boot는 /resources/static/index.html 디렉토리에 index.html이라고 넣어주면 적용이 된다.
static 아래에 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>
간단하게 welcomePage를 작성해주었다.
정상적으로 출력되는 것을 확인할 수 있다.
hello 링크를 눌러서 열면 아무것도 없기 때문에 에러가 난다.
spring enterprise는 자바 웹에 전반적인 생태계를 구성하고 있기 때문에 굉장히 많은 내용이 있다.
그래서 모든 것을 다 알 수 없기 때문에 찾는 능력이 굉장히 중요하다.
우선적으로 Spring 공식 사이트를 알아야 한다.
Spring makes Java simple.
Level up your Java code and explore what Spring can do for you.
spring.io
이 웹사이트를 들어가면 Projects에 Spring Boot라고 있다.
들어가서 LEARN 클릭 -> 현재 기준 2.7.3 버전이 있다. -> reference Doc 클릭 -> Spring Boot Features(core Features)
여기에는 해당 내용이 없었음 지금 난 내가 만든 welcom Page 를 찾아보려고 하는 중임
web에 들어오니 welcomePage가 짜잔하고 있었음
welcomePage를 만들어주었는데 현재 우리가 만든 페이지는 정적페이지이다.
내가 만든 페이지를 그냥 웹브라우저에 넘겨주는 것이다. (프로그래밍 x -> 걍 파일을 던져줌)
이제 우리가 이 정적 페이지를 loop나 프로그래밍 처럼 사용하기 위해서는 template엔진을 사용하여 조금 더 동적인 동작을 하는 페이지로 만들어 준다.
우리는 tmplate 여러 템플릿 엔진 중 thymeleaft라는 템플릿 엔진을 사용할 것이다.
Thymeleaf
Integrations galore Eclipse, IntelliJ IDEA, Spring, Play, even the up-and-coming Model-View-Controller API for Java EE 8. Write Thymeleaf in your favourite tools, using your favourite web-development framework. Check out our Ecosystem to see more integrati
www.thymeleaf.org
웹 어플리케이션에서 첫 번째 진입점은 바로 컨트롤러다.
controller라는 패키지를 만들어 주었다.
여기서 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.addAttributes("data","Hello!!!!");
return "hello";
}
}
- Spring의 Controller는 @Controller를 적어주어야 한다. (컨트롤러 어노테이션을 반드시 작성해주어야 한다.)
- GetMapping("hello")라고 적어주면 URL에서 localhost:8080/hello 이렇게 되어 있는 것을 연결시켜준다. (웹 어플리케이션에서 /hello라고 들어오면 Mapping되어 이거랑 연결되어 있는 메서드를 호출 시켜준다. 이 동작 과정은 Spring이 알아서 처리해줌)
이제 우리는 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>
여기에 해당하는 코드를 복사 붙여 넣기를 해주었다.
html xmlns:th = "http://www.thymeleaf.org" 이렇게 한줄을 넣어주어 타임리프를 사용할 수 있게 만들어 주었다.
${data}는 helloController에서 model.addAttribute("data", "Hello") 로 key를 data로 설정해주어 넘겨주었던 데이터이다.
이 때 data 키로 넘겨받았던 value 값은 Hello이다.
hello를 hello!!!로 바꿔 줬음에도 정상적으로 값이 웹페이지에서 출력되고 있다.
동작 과정
먼저 localhost:8080/hello URL를 던지면 스프링부트는 톰캣이라는 웹 서버를 내장하고 있다.
이 때 내장된 톰캣 서버가 URL을 받아서 /hello를 인지하고 Spring에게 이를 물어본다.
그럼 Spring은 GetMapping("hello")으로 되어 있는 곳을 찾는다. 여기에서 getMapping의 get은 get/post 할 때 get이다.
hello url에 매칭되어서 helloController안에 있는 hello method가 실행된다.
return 이름이 hello -> 이것이 무슨 의미냐면 command 누르고 클릭하면 hello.html로 넘어가진다.
return의 이름이 resource에 있는 hello와 이름이 똑같다.
resources/templates/hello로 넘어가서 랜더링을 실행하라는 말이다.
- 컨트롤러에서 리턴 값으로 문자를 반환하면 뷰 리졸버('viewResolver')가 화면을 찾아서 처리한다.
- 스프링 부트 템플릿엔진 기본 viewName 매핑
- resources:templates/ +{viewName} + '.html'
'Spring > Spring tutorial - 코드로 배우는 스프링 (김영한)' 카테고리의 다른 글
MVC와 템플릿 엔진 (0) | 2022.09.15 |
---|---|
정적 컨텐츠 (1) | 2022.09.15 |
빌드하고 실행하기 (0) | 2022.09.15 |
라이브러리 살펴보기 (1) | 2022.09.15 |
강의 소개 (0) | 2022.09.15 |