Spring

[Spring] Thymeleaf를 통한 View 페이지 매핑

머직타드 2022. 3. 23. 00:57

위에서 MainController 클래스 안에 index함수가 있습니다. 최상위 경로로 요청이 들어오면 "index"를 리턴하도록 작성이 되어있는데, 이는 View역할을 하는 index.html을 리턴하도록 매핑하는 로직 입니다.

 

index.html에 작성된 내용은 위와 같고, 현재 상태에서 실행을 시켜 최상위 경로에 대한 요청을 하게 되면

앞서 작성해 놓았던 View페이지인 "index.html"을 가져오게 됩니다. 그러면, MainController에서 최상위 경로('/')에 request를 하면 "index"를 리턴하게 되고, "index.html"을 가져오게 되는것은 알겠는데 어떻게 내가 작성해 놓았던 "index.html"위치를 알고 가져오게 되는 걸까요?

 

정답은 타임리프(Thymeleaf) 설정!

 

1. 타임리프(Thymeleaf)란?

저는 앞서 스프링 프로젝트를 생성할 때, 어떤 기능들을 가져다 쓸지 체크하여 프로젝트를 세팅한 적이 있습니다.

여기서 템플릿 엔진으로 타임리프(Thymeleaf)를 사용하도록 설정했는데, 이 템플릿 엔진은 스프링(백엔드)에서 무언가 페이지를 사용자에게 웹으로 보여줄 때 어떤 템플릿으로 보여줄 것이냐? 를 설정한겁니다. 즉 스프링MVC에서 V(View) 역할을 할 주체의 엔진을 타임리프로 하겠다는 얘기입니다.

 

그래서 새로 프로젝트를 생성하고 "pom.xml"을 살펴보면, 타임리프(thymeleaf)가 의존성으로 설정되어 있음을 알 수 있죠.

 

그러면 여기서 View 주체인 타임리프(Thymeleaf)에 대한 설정은 "application.yml"에서 할 수 있습니다.

현재는 아무것도 없는 텅~텅~ 비어 있지만,

 

여러가지의 타임리프 설정들을 할 수 있습니다.

실제로는 prefix에 템플릿 경로가 설정되어 있었기에(기본 설정으로 초기에는 생략되어 있음) 알아서 최상위 경로('/')를 요청하면, 알아서 "index.html"을 가져오게 되는 이유입니다. 만일 다른 경로에 있는 html을 가져오고 싶다면 이 prefix 경로를 수정해 주면 됩니다!