3. Presentation 레이어(Controller) 생성

Stupefyee's avatar
Dec 23, 2024
3. Presentation 레이어(Controller) 생성
💡

들어가기에 앞서

mustache 플러그인 추가 설치

서버 탬플릿 엔진
notion image

1. 파일 생성 및 작성

  • resources 폴더에는 static 폴더와 templates 폴더가 존재
    • static 폴더 : 정적인 자원(파일)들을 저장하는 용도
    • templates : 동적인 자원(파일)들을 저장하는 용도
      • notion image
  • templates 폴더 안에 있는 파일들은 기본적으로 숨김처리가 되어 외부에서 접근 블가
    • 주로 Thymeleaf, Mustache, Freemarker 등의 템플릿 엔진을 통해 서버 사이드에서 HTML을 렌더링하는데 사용
    • 보안: 템플릿 파일을 외부에서 직접 접근하지 못하도록 함으로써 보안을 강화
    • 서버 사이드 렌더링: 템플릿 엔진은 서버에서 데이터를 이용해 HTML을 렌더링하고, 완성된 HTML을 클라이언트에게 전송. 이 과정에서 템플릿 파일은 서버에서만 접근 가능
templates 폴더 안에 list.mustache 파일을 생성 및 작성
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. 출력 결과

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

properties 파일 추가 내용:

encoding 설정을 utf-8 로 변경
encoding 설정을 utf-8 로 변경

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

작성한 list.mustache 파일 내용이 한글 깨짐 없이 정상적으로 출력
작성한 list.mustache 파일 내용이 한글 깨짐 없이 정상적으로 출력
 
Share article

stupefyee