[Spring Boot] 2. 스프링부트 맛보기 (2)

김주희's avatar
Mar 17, 2025
[Spring  Boot] 2. 스프링부트 맛보기 (2)

0. 프로젝트 세팅

notion image
notion image
 
 
 

1. 코드 작성

1. 패키지 및 java, mustache 파일 위치 구조

notion image

2. User 클래스 - Model

package org.example.second.model; import lombok.AllArgsConstructor; import lombok.Getter; @Getter @AllArgsConstructor // 생성자 public class User { private int id; private String username; private String email; }
 

3. UserRepository 클래스 - Repositroy

package org.example.second.repository; import org.example.second.model.User; public class UserRepository { public User findOne(){ // select * from user_tb where id = 1; return new User(1, "ssar", "ssar@nate.com"); // given data } public User findTwo(){ // select * from user_tb where id = 2; return new User(2, "cos", "cos@nate.com"); // given data } }
 

4. UserController 클래스 - Controller

 
package org.example.second.controller; import org.example.second.model.User; import org.example.second.repository.UserRepository; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.ResponseBody; @Controller public class UserController { UserRepository userRepository = new UserRepository(); // 파일을 찾아줌 @GetMapping("/user/1") public String findOne(Model model){ User user = userRepository.findTwo(); model.addAttribute("model", user); return "user/info"; } @GetMapping("/v2/user/1") public @ResponseBody String findOneV2(){ // @ResponseBody는 값을 return => ResponseBody+Controller = RestController User user = userRepository.findOne(); return """ <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h1>info page</h1> <hr> <div> ${user.id}, ${user.username}, ${user.email} </div> </body> </html> """.replace("${user.id}",user.getId()+"") .replace("${user.username}",user.getUsername()) .replace("${user.email}",user.getEmail()); } }
 
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h1>info page</h1> <hr> <div> {{model.id}}, {{model.username}}, {{model.email}} </div> </body> </html>
Spring에서 model.addAttribute("model", user);를 통해 user 객체를 View에 전달하면, View에서 {{model.id}} 같은 형태로 접근할 수 있는데, 이는 Spring의 View 템플릿 엔진이 내부적으로 getter 메서드를 호출하여 데이터를 가져오기 때문
 
 
DAO - db에 붙는 데이터 관리자
@RestController 리턴되는 값을 버퍼에 담아서 돌려줌
@Controller 리턴되는 값의 경로의 파일을 찾아서 경로가 templates로 고정되어있음 자동으로 mustache 파일을 찾음 버퍼에 파일에 있는 내용을 담는것
@ResponseBody는 값을 return => ResponseBody+Controller = RestController
  1. html 코드 + 데이터 끼워넣기 2.파일에다가 데이터 끼워넣기..?
템플릿엔진 = html 코드에 java 코드를 넣는 것
매개변수 Model model mustache 라는 view 파일에 user를 "model"이라는 키의 값으로 들고가서 쓸 수 있음
mustache 파일안에서는 model.id처럼 변수를 씀 -> getId를 때려줌 model.id가 아니라 서버 측에서 자바 코드를 렌더링해서 mustache 파일에 끼워넣어줌 = 서버 사이드 렌더링
 
Share article

jay0628