반응형
스프링 부트로 스프링 프로젝트 만들기
start.spring.io
Java 버전은 11로, Dependencies에는 Spring Web과 Thymeleaf를 추가한다.
Generate 버튼을 누르면, jar 파일을 다운로드 받게 된다.
이 파일의 압축을 푼 다음, IDE에서 build.gradle을 open하면 프로젝트가 로딩된다.
이를 실행하면 다음과 같이 된다.
localhost:8080에 접속하면 아래와 같다.
IntelliJ의 빌드 속도를 높이려면
Settings → Build, Execution, Deployment → Build Tools → Gradle → Build and run using: IntelliJ IDEA & Run test using: IntelliJ IDEA로 변경한다.
기본으로 설정되는 Gradle의 빌드 속도가 느리기 때문
현업에서는 sout으로 출력하지 않는다. 로그로 출력해야 한다.
이유
로깅 시스템은 다양한 로그 레벨(디버그, 정보, 경고, 오류 등)을 제공하여 각 로그 메시지의 중요도에 따라 처리할 수 있다. 이를 통해 디버깅 정보와 실제 문제를 식별하는 데 도움이 된다.
콘솔 출력은 디버깅에 유용할 수 있지만, 운영 환경에서는 로그를 파일에 저장하거나 모니터링 시스템과 연동하여 중요한 정보를 실시간으로 모니터링할 수 있다.
static 폴더: 정적인 페이지들(가령, index.html 등)이 위치하는 공간
spring.io → Projects → Spring Boot → Learn → Reference Doc. → Web → “Welcome Page” 검색
Thymeleaf 템플릿 엔진 동작 확인
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 {
// GET POST 할 때의 GET
@GetMapping("hello") // hello로 들어오면, 이 메서드를 호출해준다.
public String hello(Model model) {
model.addAttribute("data", "hello");
return "hello";
}
}
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org"> <!--Thymeleaf 엔진 선언 부분-->
<head>
<title>Hello</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
</head>
<body>
<p th:text="'안녕하세요. ' + ${data}">안녕하세요. 손님</p>
<!--th: Thymeleaf의 th-->
<!--data: "HelloController.java"에서 Model에 넘긴 'data'와 동일하며, 값으로는 'hello'가 넘어온다. -->
</body>
</html>
templates/hello.html:11
: localhost:8080/hello 페이지의 페이지 소스 보기 결과
${data} 부분이 controller/HelloController.java에서 넣어준 값으로 치환된 것을 볼 수 있다.
컨트롤러에서 리턴 값으로 문자를 반환하면 viewResolver가 화면을 찾아서 렌더링한다.
웹 브라우저(클라이언트)가 localhost:8080/hello를 던지면, 내장 톰캣 서버가 이를 받는다. 서버는 이를 받아 다시 Spring에게 던진다.
Spring은 hello에 대한 요청을 처리하기 위해 GetMapping으로 명시된 ‘/hello’ 페이지가 있는지 찾아서 매칭시킨다.
GepMapping에 의해 매칭된 Controller의 해당 메서드가 실행된다.
이 메서드에 의해 페이지가 만들어지고, 만들어진 페이지를 return “hello”를 이용해서 넘긴다. return “hello”에서 “hello”는 만들어진 페이지를 받을 파일로서, 위 예시에서는 hello.html이다. 즉, hello.html을 자동으로 찾아내는데, 이는 resources/templates 폴더의 하위에 hello.html이 위치할 때 가능한 일이다.
스프링 부트 템플릿엔진 기본 viewName 매핑: resources:templates/ +{ViewName}+ .html
해당 파일을 찾아내면 렌더링이 이루어진다.
spring-boot-devtools 라이브러리를 추가해주면, 서버 재시작 없이 View 파일 변경이 가능하다.
반응형
'TIL' 카테고리의 다른 글
2023-10-31-TIL (1) | 2023.11.01 |
---|---|
2023-10-30-TIL (2) | 2023.10.31 |
2023-10-28-TIL (1) | 2023.10.31 |
2023-10-27-TIL (1) | 2023.10.27 |
2023-10-26-TIL (0) | 2023.10.27 |