inblog logo
|
parangdajavous
    Spring Boot

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

    김미숙's avatar
    김미숙
    Mar 20, 2025
    [Spring Boot] 1. Spring Boot 맛보기_2.Second
    Contents
    프로젝트 생성Code 작성Templates Engine

    프로젝트 생성

    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
    Contents
    프로젝트 생성Code 작성Templates Engine

    parangdajavous

    RSS·Powered by Inblog