프로젝트 생성


Code 작성
Package 만들기

Package 안에 File 만들기

templates 파일 안에 user package 만들고 info.html 파일 만들기
info.html 확장자 변경 → mustache

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>

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());
}
}
<!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>

Share article