후라이
Spring Boot - 스프링 입문 (2) 본문
이제 사용자에게 보여지는 웹 페이지의 시각적인 부분을 살펴보자.
View 환경설정
1. Welcome 페이지 만들기
<!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>
resources/static/index.html 파일을 만들어 위처럼 코드 작성을 한 후 Run
위 방식은 그냥 정적 페이지를 생성하는 것! -> 내가 만든 걸 띄우기만 한다.
- 스프링 부트가 제공하는 Welcom Page 기능
- static/index.html을 올려두면 Welcome page 기능을 제공한다.
2. thymeleaf 템플릿 엔진
thymeleaf 공식 사이트 : https://www.thymeleaf.org/
thymeleaf는 서버 측 Java 템플릿 엔진으로, 주로 웹 어플리케이션 개발에서 사용
-> HTML, XML, JavaScript, CSS 및 일반 텍스트와 같은 여러 마크업 언어를 지원한다.
Spring에서는 Thymeleaf를 뷰 템플릿 엔진으로 채택하는 경우가 많음
@Controller
public class HelloController {
@GetMapping("hello")
public String hello(Model model) {
model.addAttribute("data", "hello!!");
//각각 key, value
return "hello"; //template에 있는 hello.html에 연결해라
//thymeleaf 템플릿 엔진 처리
}
}
- @Controller : 해당 클래스가 스프링 MVC에서 컨트롤러 역할을 하는 클래스임을 나타냄 -> 웹 요청 처리
- @GetMapping("hello") : HTTP GET 요청을 처리하는 핸들러 메서드인 'hello'를 정의
-> "/hello" 경로로 들어오는 GET 요청을 이 메서드가 처리함
- public String hello(Model model) : Model 객체를 매개변수로 받음
Model 객체는 컨트롤러에서 뷰로 데이터를 전달하는 데 사용
- model.addAttribute("data", "hello!!") : "data"라는 키와 "hello!!"라는 값을 사진 value를 'Model' 객체에 추가
-> 뷰로 전달되어 화면에 표시됨
- return "hello" : 컨트롤러 처리 결과로 사용할 뷰의 이름
-> hello.html이라는 Thymeleaf 템플릿이 호출되어 화면에 표시됨.
<Model 객체 알아보기>
Controller의 메서드는 Model이라는 객체를 매개변수로 받을 수 있다.
Model은 스프링 MVC에서 컨트롤러 뷰로 데이터를 전달하는 데 사용!
여러 메서드를 가지고 있는데,
'addAttribute' 메서드가 가장 일반적으로 사용된다.
이 메서드를 통해 컨트롤러 -> 뷰 데이터 전달이 이루어진다.
개발자는 직접 model을 생성할 필요없이 파라미터로 선언만 하면 스프링에서 객체가 만들어진다.
<!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가 화면을 찾아 처리한다.
과정을 정리하면,
1. 웹 브라우저에서 localhost:8090/hello와 같은 URL로 HTTP 요청을 보냄
2. 내장 톰켓 서버는 이 요청을 받아들이고, Spring DispathcherServlet이 요청을 처리함
3. Spring DispatcherServlet은 컨트롤러를 찾기 위해 @Controller 애너테이션이 붙은 클래스들을 스캔
--> 여기서는 HelloController
4. HelloController 클래스에서 @GetMapping("hello") 애너테이션이 붙은 'hello' 메서드가 해당 URL 요청을 처리할 메서드로 선택
5. 'hello' 메서드가 실행되면서 'Model' 객체가 생성되고, 필요한 데이터가 추가됨
-> model.addAttribute("data", "hello!!")를 통해 data 키와 hello!! 값이 추가
6. 'hello' 메서드는 "hello" 라는 문자열을 반환하면서 스프링에게 이 요청을 처리한 결과로 사용할 뷰의 이름이
"hello" 라는 것을 알려줌
7. View Resolver는 이 뷰 이름("hello")을 기반으로 실제로 사용할 뷰 템플릿을 찾음
-> 템플릿 엔진이 Thymeleaf인 경우 "hello.html"을 찾아 렌더링
8. 렌더링 된 HTML이 웹 브라우저로 전송되어 화면에 표시
resources:templates/+{ViewName}+.html
.jar파일 build하기
앞에서 했던 방법은 intellij에서 Run시킨 것.
우리는 파일을 빌드하고 바로 실행시킬 수도 있음
[Window 사용]
- 콘솔 (저는 Git Bash 사용했습니다)로 이동 -> cmd,,
- 우리가 사용했던 hello-spring이 있는 파일로 이동
cd hello-spring
ll 명령어로 파일들을 확인해보면
gradle/
gradlew
gradlew.bat
이렇게 파일들이 있는데,
gradlew build를 입력하여 빌드해주면 됨
build 해주고 나면 build 폴더가 생긴 것을 알 수 있고
cd build/libs
java -jar hello-spring-0.0.1-SNAPSHOT.jar
차례대로 수행
실행확인 완료 후
localhost:포트번호로 접속하면 해당 뷰도 잘 실행됨을 확인할 수 있음
'Spring' 카테고리의 다른 글
[Spring Boot] - H2 데이터베이스 연결 / Database not found (0) | 2024.02.12 |
---|---|
[Spring Boot] - 스프링 입문 (5) (1) | 2024.01.21 |
[Spring Boot] - 스프링 입문 (4) (0) | 2024.01.21 |
Spring Boot - 스프링 입문 (3) (0) | 2024.01.07 |
Spring Boot - 스프링 입문 (1) (1) | 2024.01.06 |