본문 바로가기

Study Information Technology

Spring Boot와 Thymeleaf를 활용한 웹 애플리케이션 개발

728x90
반응형

Spring Boot와 Thymeleaf를 활용한 웹 애플리케이션 개발

Overview

Spring Boot와 Thymeleaf를 함께 사용하면 현대적인 웹 애플리케이션을 빠르고 효율적으로 개발할 수 있습니다. Spring Boot는 강력한 스프링 프레임워크를 간편하게 설정할 수 있도록 도와주며, Thymeleaf는 HTML 템플릿을 사용하여 서버 측에서 동적으로 콘텐츠를 생성할 수 있게 해줍니다. 이 설명에서는 Spring Boot와 Thymeleaf를 활용하여 기본적인 웹 애플리케이션을 구축하는 방법을 자세히 다루겠습니다.

1. Spring Boot와 Thymeleaf의 기본 개념

Spring Boot

Spring Boot는 스프링 프레임워크의 서브 프로젝트로, 스프링 애플리케이션을 쉽고 빠르게 설정할 수 있도록 돕는 도구입니다. Spring Boot는 기본적인 설정을 자동으로 처리하고, 복잡한 XML 설정 없이 애플리케이션을 시작할 수 있게 해줍니다.

특징:

  • 자동 설정: Spring Boot는 많은 설정을 자동으로 처리하여 개발자가 기본적인 설정에 신경 쓸 필요가 없습니다.
  • Standalone: Spring Boot 애플리케이션은 독립적으로 실행할 수 있으며, 내장된 서블릿 컨테이너(예: Tomcat)를 포함합니다.
  • 의존성 관리: Spring Boot 스타터 패키지를 사용하여 의존성을 쉽게 관리할 수 있습니다.

Thymeleaf

Thymeleaf는 자바 기반의 서버 측 템플릿 엔진입니다. HTML을 템플릿으로 사용하여 동적으로 콘텐츠를 생성할 수 있으며, 표준 HTML 파일을 그대로 사용할 수 있기 때문에 웹 브라우저에서 바로 열어볼 수 있습니다.

특징:

  • 자연스러운 템플릿: HTML 파일을 그대로 사용할 수 있어 템플릿을 수정할 때 웹 브라우저에서 결과를 바로 확인할 수 있습니다.
  • 확장성: Thymeleaf는 다양한 확장 기능을 제공하여 복잡한 HTML 콘텐츠를 효율적으로 처리할 수 있습니다.
  • 보안: Thymeleaf는 HTML 인젝션 공격에 대해 강력한 보안을 제공합니다.

2. Spring Boot와 Thymeleaf를 이용한 기본 애플리케이션 구성

2.1. 프로젝트 설정

먼저, Spring Boot와 Thymeleaf를 사용하는 프로젝트를 설정하는 방법을 설명합니다. 이를 위해 Spring Initializr를 사용하여 기본 프로젝트를 생성할 수 있습니다.

  1. Spring Initializr로 프로젝트 생성:
  • Spring Initializr 웹사이트에 접속합니다.
  • 프로젝트 메타데이터를 입력합니다 (예: Group: com.example, Artifact: demo).
  • DependenciesThymeleafSpring Web을 추가합니다.
  • Generate 버튼을 클릭하여 프로젝트를 다운로드합니다.
  1. 프로젝트 구조:
    다운로드한 프로젝트를 IDE(예: IntelliJ IDEA, Eclipse)에서 열어보면 기본적인 디렉토리 구조와 설정 파일이 포함되어 있습니다.

2.2. Thymeleaf 템플릿 파일 생성

Thymeleaf 템플릿 파일은 src/main/resources/templates 디렉토리에 위치해야 합니다. HTML 파일을 이 디렉토리에 생성하여 Thymeleaf가 이를 읽어들입니다.

예시: src/main/resources/templates/index.html

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
  <head>
    <title>Spring Boot와 Thymeleaf</title>
  </head>
  <body>
    <h1 th:text="'안녕하세요, ' + ${name}">안녕하세요</h1>
  </body>
</html>

위 HTML 파일에서는 Thymeleaf의 템플릿 구문인 th:text를 사용하여 변수 ${name}의 값을 HTML에 삽입합니다.

2.3. 컨트롤러 클래스 생성

Spring Boot 애플리케이션의 컨트롤러 클래스는 클라이언트의 요청을 처리하고, Thymeleaf 템플릿과 데이터를 연결하는 역할을 합니다.

예시: src/main/java/com/example/demo/controller/HelloController.java

package com.example.demo.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class HelloController {

@GetMapping("/")
public String index(Model model) {
model.addAttribute("name", "Spring Boot");
return "index";
}
}

위 코드에서 @GetMapping 애너테이션을 사용하여 / 경로에 대한 GET 요청을 처리합니다. Model 객체를 사용하여 Thymeleaf 템플릿에 데이터를 전달합니다.

2.4. 애플리케이션 실행 및 확인

이제 애플리케이션을 실행하여 Thymeleaf 템플릿이 제대로 렌더링되는지 확인할 수 있습니다. IDE에서 DemoApplication 클래스를 실행하거나, 터미널에서 다음 명령어를 사용합니다.

./mvnw spring-boot:run

브라우저에서 http://localhost:8080을 열어보면, 안녕하세요, Spring Boot라는 텍스트가 표시됩니다.

3. 에러 처리 및 해결 방법

애플리케이션 개발 중 발생할 수 있는 일반적인 에러와 그 해결 방법을 다룹니다.

3.1. TemplateInputException

에러 메시지:

org.thymeleaf.exceptions.TemplateInputException: Template not found

원인: Thymeleaf가 지정된 템플릿 파일을 찾을 수 없다는 의미입니다.

해결 방법:

  • 템플릿 파일이 src/main/resources/templates 디렉토리 내에 위치하는지 확인합니다.
  • 파일 이름이 정확히 매핑되는지 확인합니다 (예: index.html).

3.2. ModelAttribute 누락

에러 메시지:

java.lang.NullPointerException: Cannot invoke "java.lang.String.length()" because "name" is null

원인: 컨트롤러에서 Model에 필요한 속성을 추가하지 않았습니다.

해결 방법:

  • 컨트롤러에서 Model.addAttribute() 메서드를 사용하여 필요한 모든 속성을 추가합니다.

참고문서

이 설명이 Spring Boot와 Thymeleaf를 활용한 웹 애플리케이션 개발에 도움이 되었기를 바랍니다. 이 두 기술의 조합을 통해 강력하고 유연한 웹 애플리케이션을 쉽게 구축할 수 있습니다.

728x90
반응형