스프링의 기본기를 탄탄히 하기 위해 김영한의 Spring 강의를 듣기 시작했다.
원래 알던 내용이 많지만 동작 원리에 대해 더 심층적으로 이해하기 위해 공부하려고 한다.
정적 컨텐츠 (static)
static 폴더에 hello-static.html 파일을 생성한다.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
static content
</body>
</html>
http://localhost:8080/hello-static.html 경로를 치고 들어가면 해당 뷰로 연결된다.
hello-static이라는 컨트롤러가 없기 때문에 static에 있는 hello-static이라는 이름의 html 파일을 찾음
템플릿 엔진
MVC: Model, View, Controller
템플릿 엔진: 동적으로 생성되는 웹 페이지나 문서의 구조와 내용을 분리하여 관리하는 도구
템플릿 파일과 데이터를 결합하여 최종적으로 출력되는 문서를 생성한다. 템플릿 엔진을 사용하면 웹 애플리케이션에서 동적으로 변하는 내용을 쉽게 표현하고 관리할 수 있다.
@Controller
public class HelloController {
@GetMapping("hello-mvc")
public String helloMvc(@RequestParam("name") String name, Model model) {
model.addAttribute("name", name);
return "hello-template";
}
}
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<p th:text="'hello ' + ${name}">hello empty</p>
<!-- hello empty 부분이 템플릿 엔진을 통해 th:text의 값으로 치환 됨-->
</body>
</html>
http://localhost:8080/hello-mvc?name=spring! 경로로 이동하면 ${name}의 부분이 내가 주소창에 name 값으로 입력한 sprign! 으로 치환된다.
@RequestParam: 주소창에 입력된 값을 파라미터로 가져온다.
API
1. @ResponseBody로 String 값 내려주기
@GetMapping("hello-string")
@ResponseBody
public String helloString(@RequestParam("name") String name) {
return "hello " + name;
}
http는 header와 body로 구성되어 있음
@ResponseBody: body에 리턴값을 직접 넣어주겠다는 뜻
html 태그 없이 그대로 데이터를 내려줌 -> 페이지 소스를 보면 hello spring 문자열만 내려주게 됨
2. API 방식 (JSON)
@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;
}
}
alt + insert: getter, setter, 생성자 등 만드는 단축키
Hello 객체의 name 값이 private이기 때문에 getter, setter를 만들어 줌 -> property 접근 방식
http://localhost:8080/hello-api?name=spring! 경로로 이동해 name 값을 넣어주면 xml 방식이 아닌 JSON 방식으로 반환하게 됨
JSON: key, value 방식
Jackson: 객체 <-> JSON 형식 컨버팅 처리하는 라이브러리
정적 컨텐츠, MVC & 템플릿 엔진, API 정리
- 정적 컨텐츠
html 파일을 그대로 내려줌 - MVC & 템플릿 엔진
템플릿 엔진을 MVC 방식으로 쪼개서 렌더링 된 html을 클라이언트에게 반환 - API
객체를 JSON 형식으로 컨버팅 하고 뷰 없이 http Response에 값을 담아서 반환
'인프런 강의 > 김영한 Spring' 카테고리의 다른 글
[Spring Boot] AOP (0) | 2023.12.19 |
---|---|
[Spring Boot] 회원 예제 만들기 (3) - 스프링 DB 접근 기술 (0) | 2023.11.25 |
[Spring Boot] 회원 예제 만들기 (2) - 웹 MVC 개발 (1) | 2023.11.25 |
[Spring Boot] 스프링 빈과 의존 관계 (0) | 2023.11.25 |
[Spring Boot] 회원 예제 만들기 (1) - BackEnd 개발 (1) | 2023.11.25 |