1. 프로젝트 생성
사전 준비 : Java, IntelliJ / Eclipse 설치
https://start.spring.io 에서 스프링 프로젝트 생성
다운로드한 파일을 IntelliJ에서 실행한다.
IntelliJ에서 main 파일을 실행하면 다음과 같이 localhost:8080 에서 실행된다.
chrome에서 localhost:8080을 접속했을 때 다음과 같은 화면이 나온다.
2. View 환경설정
resources/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>
static/index.html을 생성하면 스프링 부트가 Welcome page 기능을 제공한다.
localhost:8080 에 접속하면 다음과 같은 화면이 나온다.
java/hello.hello_spring/controller/HelloController
package hello.hello_spring.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.addAttribute("data", "hello!!");
return "hello";
}
}
resources/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>
localhost:8080/hello 에 접속하면 다음과 같은 화면이 나온다.
java/hello.hello_spring/controller/HelloController
model.addAttribute("data", "hello!!");
resources/templates/hello.html
<p th:text="'안녕하세요. ' + ${data}">안녕하세요. 손님</p>
data 의 값이 "hello!!" 로 설정된다.
3. 스프링 웹 개발 기초
1) 정적 컨텐츠 : 파일을 웹브라우저에 그대로 전달하는 것
스프링 부트에서는 정적 컨텐츠 기능을 제공한다.
resources/static/hello-static.html
<!DOCTYPE HTML>
<html>
<head>
<title>static content</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
정적 컨텐츠 입니다.
</body>
</html>
localhost:8080/hello-static.html
2) MVC와 템플릿 엔진 : html을 서버에서 동적으로 프로그래밍해서 전달하는 것
MVC : Model, View, Controller
java/hello.hello_spring/controller/HelloController
package hello.hello_spring.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
@Controller
public class HelloController {
@GetMapping("hello")
public String hello(Model model) {
model.addAttribute("data", "hello!!");
return "hello";
}
@GetMapping("hello-mvc")
public String helloMvc(@RequestParam("name") String name, Model model) {
model.addAttribute("name", name);
return "hello-template";
}
}
resources/templates/hello-template.html
<html xmlns:th="http://www.thymeleaf.org">
<body>
<p th:text="'hello ' + ${name}">hello! empty</p>
</body>
</html>
p 태그 안 hello! empty는 서버가 없을 때 파일을 실행하면 화면에 나타나고, 서버에서 실행했을 때에는 th:text로 치환된다.
localhost:8080/hello-mvc
@RequestParam("name") 에서 required=true가 기본이므로 필수로 존재해야 한다.
localhost:8080/hello-mvc?name=spring
3) API : json 형식으로 데이터를 전달하는 것
java/hello.hello_spring/controller/HelloController
@GetMapping("hello-string")
@ResponseBody
public String helloString(@RequestParam("name") String name) {
return "hello " + name;
}
localhost:8080/hello-string?name=spring
java/hello.hello_spring/controller/HelloController
@GetMapping("hello-api")
@ResponseBody
public Hello helloApi(@RequestParam("name") String name) {
Hello hello = new Hello();
hello.setName(name);
return hello;
}
static class Hello {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
localhost:8080/hello-api?name=spring!!!
@ResponseBody : HTTP의 BODY에 문자 내용을 직접 반환한다. 'viewResolver' 대신에 'HttpMessageConverter'가 동작한다.
'WINK-(Web & App) > Spring Boot 스터디' 카테고리의 다른 글
[2025 겨울방학 스프링 스터디] 정채은 #1주차 (1) | 2025.01.14 |
---|---|
(미완성)[2024-2 SpringBoot 스터디] 정호용 #6주차 섹션 8~9 (0) | 2024.12.03 |
[2024-2 Spring Boot 스터디] 조상혁 #6주차 (3) | 2024.12.02 |
[2024-2 Spring Boot 스터디] 김아리 #5주차 (0) | 2024.11.28 |
[2024-2 Spring Boot 스터디] 조상혁 #5주차 (2) | 2024.11.27 |