[스프링] 뷰 템플릿의 다양한 기능 활용

본 포스트에서는 스프링 프레임워크에서 뷰 템플릿을 활용하는 다양한 방법과 기능에 대해 다루겠습니다. 뷰 템플릿은 HTML, XML, JSON 등과 같은 클라이언트에게 보여지는 부분의 템플릿을 관리하고 출력하는데 사용됩니다.

1. JSP vs. Thymeleaf

스프링에서는 주로 JSP(Java Server Pages)와 Thymeleaf를 뷰 템플릿으로 사용합니다. JSP는 기존에 많이 사용되어 왔으며, 자바 코드를 직접 삽입하여 동적인 뷰를 생성할 수 있습니다. 반면에 Thymeleaf는 HTML과 비슷한 문법을 사용하여 뷰 렌더링을 쉽게 할 수 있는 장점이 있습니다.

JSP

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
    <title>Welcome</title>
</head>
<body>
    <h1>Welcome ${user.name}</h1>
</body>
</html>

Thymeleaf

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>Welcome</title>
</head>
<body>
    <h1>Welcome [[${user.name}]]</h1>
</body>
</html>

2. 레이아웃 및 조각 템플릿

뷰 템플릿에서는 레이아웃 및 조각 템플릿을 활용하여 중복을 제거하고 레이아웃을 쉽게 관리할 수 있습니다.

Thymeleaf 레이아웃

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>Layout Example</title>
    <th:replace="fragments/header :: header"></th:replace>
</head>
<body>
    <div th:replace="fragments/menu :: menu"></div>
    <div th:replace="fragments/content :: content"></div>
</body>
</html>

Thymeleaf 조각 템플릿

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<body>
    <div th:fragment="header">
        <h1>Header</h1>
    </div>
    <div th:fragment="menu">
        <ul>
            <li><a href="#">Menu Item 1</a></li>
            <li><a href="#">Menu Item 2</a></li>
        </ul>
    </div>
    <div th:fragment="content">
        <p>Main content goes here...</p>
    </div>
</body>
</html>

3. 다국어 지원

뷰 템플릿에서는 다국어 지원을 위해 메시지 소스 및 메시지 표현식을 이용할 수 있습니다.

Thymeleaf 다국어 지원

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title th:text="#{welcome.title}">Welcome</title>
</head>
<body>
    <h1 th:text="#{welcome.message}">Welcome</h1>
</body>
</html>

스프링 프레임워크에서 뷰 템플릿을 활용하는 다양한 기능을 살펴보았습니다. JSP와 Thymeleaf를 비교하고, 레이아웃 및 조각 템플릿, 그리고 다국어 지원을 통해 뷰 템플릿을 보다 효과적으로 활용할 수 있음을 확인할 수 있습니다.

더 많은 정보를 얻으려면 스프링 공식 문서 를 참고하세요.