[Spring Boot] 1. Spring Boot 맛보기_2.Second

김미숙's avatar
Mar 20, 2025
[Spring Boot] 1. Spring Boot 맛보기_2.Second

프로젝트 생성

notion image
notion image
 

Code 작성

Package 만들기

notion image

Package 안에 File 만들기

notion image

templates 파일 안에 user package 만들고 info.html 파일 만들기

‼️
info.html 확장자 변경 → mustache
notion image

UserController (M-V-C Patton)

‼️
import 할 때 잘 보고 하기
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 // 리턴되는 값의 경로를 찾아서 (templates-> * -> info.mustache) 그 안에 있는 데이터를 버퍼에 담는다 public class UserController { UserRepository userRepository = new UserRepository(); // templates 엔진 / html에다가 Java code를 끼워넣는 기술 // 파일안에 있는 내용을 읽어서 user에 있는 내용을 끼워넣고 버퍼에 담는다 @GetMapping("/user/1") public String findOne(Model model) { User user = userRepository.findTwo(); model.addAttribute("model", user); // hashmap, view 파일에서 꺼내쓸 수 있다 / model: key & user: value return "user/info"; // view 파일 } // Java code에 html 데이터 끼워넣기 @GetMapping("/v2/user/1") public @ResponseBody String findOneV2() { // @ResponseBody -> 리턴되는 값을 준다 = @RestController User user = userRepository.findOne(); // findOne: 1, ssar, ssar@nate.com / findTwo: 2, cos, cos@nate.com 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()); } }
 

UserRepository

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 } }
 

User

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

info.mustache

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h1>info page</h1> <hr> <div> 1, ssar, ssar@nate.com </div> </body> </html>
notion image
 

Templates Engine

‼️
지정된 Templates 양식과 데이터가 합쳐져 HTML 문서를 출력하는 소프트웨어
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 // 리턴되는 값의 경로를 찾아서 (templates-> * -> info.mustache) 그 안에 있는 데이터를 버퍼에 담는다 public class UserController { UserRepository userRepository = new UserRepository(); // templates 엔진 / html에다가 Java code를 끼워넣는 기술 // 파일안에 있는 내용을 읽어서 user에 있는 내용을 끼워넣고 버퍼에 담는다 @GetMapping("/user/1") public String findOne(Model model) { User user = userRepository.findTwo(); model.addAttribute("model", user); // hashmap, view 파일에서 꺼내쓸 수 있다 / model: key & user: value return "user/info"; // view 파일 } // Java code에 html 데이터 끼워넣기 @GetMapping("/v2/user/1") public @ResponseBody String findOneV2() { // @ResponseBody -> 리턴되는 값을 준다 = @RestController User user = userRepository.findOne(); // findOne: 1, ssar, ssar@nate.com / findTwo: 2, cos, cos@nate.com 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()); } }
 
‼️

Server Side Rendering

  • Java code들을 Server측에서 해석해서 데이터를 넣는 기술
  • Server 쪽에서 Rendering을 하여 화면을 보여주는 방식
<!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>
notion image
Share article

parangdajavous