상세 컨텐츠

본문 제목

Spring Boot JSP "Error resolving template" 오류 해결하기

[SW]/[오류-해결] 2025

by 시원00 2025. 2. 1. 17:51

본문

Springboot를 통해 프로젝트를 만들 때 Dependencies에 Thymleaf를 추가하여 오류 발생 (추정)

ERROR org.thymeleaf.TemplateEngine : Exception processing template "home": Error resolving template [home], template might not exist or might not be accessible by any of the configured Template Resolvers

 

이 부분을 해결해보자.

 

이 오류는 Spring Boot가 JSP 파일을 찾지 못할 때 발생한다. 기본적으로 Spring Boot는 Thymeleaf를 기본 템플릿 엔진으로 사용하기 때문에, JSP를 사용하려면 추가적인 설정이 필요하다.

이번 글에서는 Gradle 프로젝트에서 JSP를 사용할 때 발생하는 오류를 해결하는 방법을 정리한다. 

 

1. JSP 파일의 위치 확인

Spring Boot에서 JSP 파일은 src/main/webapp/WEB-INF/views/ 폴더에 위치해야 한다.

(HTML은 templates에 위치하면 되었음)

 

📌 올바른 위치:

src/main/webapp/WEB-INF/views/home.jsp

 잘못된 위치 (Spring Boot에서 JSP를 인식하지 못함)

src/main/resources/templates/home.jsp  (Thymeleaf용 폴더)

만약 JSP 파일이 templates 폴더 안에 있다면, 반드시 WEB-INF/views/로 이동해야 한다.

 

2. application.properties 설정 추가

Spring Boot가 JSP를 찾을 수 있도록 설정을 추가해야 한다.

📌 src/main/resources/application.properties 파일에 아래 내용을 추가한다.

spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp

이 설정은 Spring Boot가 return "home";을 호출할 때 WEB-INF/views/home.jsp를 찾도록 도와준다.

 

3. Gradle 설정 변경

Spring Boot에서 JSP를 제대로 사용하려면 몇 가지 필수 라이브러리를 추가해야 한다.

📌 build.gradle 파일을 수정한다.

(나의 경우 1번은 있었고 2,3번은 추가했다.)

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'javax.servlet:jstl'
    implementation 'org.apache.tomcat.embed:tomcat-embed-jasper'
}

✅ 라이브러리 설명

  • tomcat-embed-jasper: JSP를 사용할 수 있도록 Tomcat JSP 엔진 추가
  • javax.servlet:jstl: JSP에서 JSTL 태그 사용 가능

🔄 jar 대신 war 패키징 설정 (필수)

Spring Boot의 기본 패키징 타입은 jar이므로, JSP를 사용하려면 war로 변경해야 한다.

(스프링부트 프로젝트 생성할 때 war 선택하기)

(아래 bootJar, war 부분은 추가했다)

plugins {
    id 'org.springframework.boot' version '2.7.5'
    id 'io.spring.dependency-management' version '1.0.15.RELEASE'
    id 'java'
    id 'war'  // 추가
}

bootJar {
    enabled = false
}

war {
    enabled = true
}

이 설정을 추가하면 JSP 파일을 정상적으로 인식할 수 있다.

 

서버 재시작하면 정상 작동한다.

 

 

FIN.

관련글 더보기

댓글 영역