Presentation 레이어 만들기

화낼거양's avatar
Nov 15, 2024
Presentation 레이어 만들기
 
 
 

플러그인 추가 설치

(검색에 mustache라고 작성한 뒤, Handlebars/Mustache라고 적힌 파일을 설치하고 창을 닫습니다.)
notion image
 
 
 
 

1. 파일 생성 및 작성

 
resources 폴더에는 static 폴더와 templates 폴더가 있습니다.
  1. static 폴더 : 정적인 자원(파일)들을 저장하는 용도입니다.
  1. templates : 동적인 자원(파일)들을 저장하는 용도입니다.
 
notion image
 
templates 폴더 안에 있는 파일들은 기본적으로 숨김처리가 되어 외부에서 접근할 수 없습니다.
이 폴더는 주로 Thymeleaf, Mustache, Freemarker 등의 템플릿 엔진을 통해 서버 사이드에서 HTML을 렌더링하는데 사용됩니다.
 

이유:

  1. 보안: 템플릿 파일을 외부에서 직접 접근하지 못하도록 함으로써 보안을 강화합니다.
  1. 서버 사이드 렌더링: 템플릿 엔진은 서버에서 데이터를 이용해 HTML을 렌더링하고, 완성된 HTML을 클라이언트에게 전송합니다. 이 과정에서 템플릿 파일은 서버에서만 접근 가능합니다.
 
notion image
 
templates 폴더 안에 list.mustache 파일을 생성 및 작성합니다.
 

list.mustache 파일 내용:

<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>blog</title> </head> <body> <nav> <ul> <li> <a href="#">홈</a> </li> <li> <a href="#">글쓰기</a> </li> </ul> </nav> <hr> <section> <table border="1"> <tr> <th>번호</th> <th>제목</th> <th></th> </tr> <tr> <td>5</td> <td>제목5</td> <td><a href="#">상세보기</a></td> </tr> <tr> <td>4</td> <td>제목4</td> <td><a href="#">상세보기</a></td> </tr> </table> </section> </body> </html>
 
 
 

 
 
위의 list.mustache 파일을 실행시키기 위해 컨트롤러 클래스의 내용을 추가적으로 작성합니다.
 

BoardController 작성 내용 :

@RequiredArgsConstructor// final이 붙어있는 변수의 생성자를 만들어준다 @Controller public class BoardController { private final BoardService boardService; // 컨트롤러는 view resolver 클래스를 가지고 있고, return 문자열과 동일한 파일을 찾아서 실행한다. @GetMapping("/") public String list() { return "list"; } }
 
간단하게 경로를 / 하나로 작성하였으며, 해당 요청을 받으면 list 파일의 내용을 보여줄 수 있도록 구성하였습니다.
 
return 할 문자열 값을 보여줄 파일의 이름 (확장자 제외) 만 작성하면, 해당하는 이름의 뷰 내용을 브라우저에서 출력할 수 있습니다.
 
💡
컨트롤러는 클라이언트의 요청을 처리하고, ViewResolver를 통해 논리적 뷰 이름을 실제 뷰 파일로 매핑하여 최종적으로 클라이언트에게 응답을 제공합니다.
 
 

2. 출력 결과

 
 
notion image
localhost:8080/ 경로를 통해 확인 결과.
properties 파일에서 인코딩 설정을 하지 않아 한글이 모두 깨진 상태로 출력되는 모습입니다.
 
해당 문제를 해결하기 위해 properties 파일에 추가 내용을 작성하였습니다.
 

properties 파일 추가 내용:

 
notion image
 
 
 
 

 
 
 

3. properties 파일 수정 후 출력 결과

 
 
notion image
작성한 list.mustache 파일 내용이 한글 깨짐 없이 정상적으로 출력되는 것을 확인할 수 있습니다.
 
Share article

moohyun