Spring Boot에서 JSP를 사용하여 웹 애플리케이션을 개발할 때,
WEB-INF 경로에 위치한 JSP 파일을 호출하면 다음과 같은 경고가 발생할 수 있습니다.
2025-02-24T19:31:20.902+09:00 WARN 73515
--- [nio-8080-exec-1] o.s.w.s.resource.ResourceHandlerUtils :
Path with "WEB-INF" or "META-INF": [WEB-INF/views/index.jsp]
이 문제는 tomcat-embed-jasper 의존성이 추가되지 않아서 발생합니다.
Spring Boot에서 JSP 파일을 렌더링하려면 Jasper JSP 엔진이 필요합니다. 따라서 pom.xml에 해당 의존성을 추가해야 합니다.
1. 원인 분석
Spring Boot 기본 설정에서는 정적 리소스 (예: HTML, CSS, JavaScript)는 /static, /public, /resources, /META-INF/resources 디렉터리에서 제공됩니다. 하지만 JSP 파일은 서블릿 컨테이너가 직접 처리해야 하므로 WEB-INF 내부에 두고 InternalResourceViewResolver를 통해 접근해야 합니다.
Spring Boot가 JSP를 해석하려면 tomcat-embed-jasper 라이브러리가 필요하지만, 기본적으로 포함되어 있지 않으므로 직접 추가해야 합니다.
2. 해결 방법
1) pom.xml에 tomcat-embed-jasper 추가
먼저, pom.xml 파일에 다음과 같은 의존성을 추가합니다.
<dependencies>
<!-- Spring Boot Starter Web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- JSP 렌더링을 위한 Jasper 엔진 -->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>
<!-- JSTL 추가 (선택 사항) -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
</dependencies>
2) application.properties 설정 확인
JSP 파일을 WEB-INF/views/ 폴더에서 찾을 수 있도록 application.properties에 다음과 같이 설정합니다.
spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp
이 설정을 적용하면 컨트롤러에서 return "index";와 같이 뷰 이름을 반환할 때 WEB-INF/views/index.jsp 파일을 찾아서 렌더링하게 됩니다.
3) 컨트롤러 설정
JSP 페이지를 반환하는 컨트롤러를 다음과 같이 설정할 수 있습니다.
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class HomeController {
@GetMapping("/")
public String home() {
return "index";
}
}
4) 프로젝트 구조 확인
JSP 파일이 올바른 위치에 있는지 확인하세요.
src/main/webapp/WEB-INF/views/index.jsp
index.jsp 파일의 기본 예제는 다음과 같습니다.
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
<title>Home Page</title>
</head>
<body>
<h1>Welcome to Spring Boot with JSP</h1>
</body>
</html>
3. 결론
Spring Boot에서 JSP를 사용할 때 WEB-INF 내부의 JSP 파일이 정상적으로 렌더링되지 않는 경우, tomcat-embed-jasper 의존성을 추가하면 해결할 수 있습니다.
필수 의존성을 추가하고 application.properties에서 JSP 경로를 올바르게 설정한 후, 컨트롤러에서 JSP를 반환하도록 구성하면 정상적으로 동작합니다.
'개발 > Spring' 카테고리의 다른 글
| 스프링에서 생성자 주입(Constructor Injection)을 권장 (0) | 2025.09.12 |
|---|---|
| Spring Boot와 Jasypt로 비밀번호 암호화 및 복호화 설정 (0) | 2025.03.17 |
| Spring Framework 및 Spring Boot 버전에 따른 지원 Java 버전 (0) | 2025.02.24 |
| @Mock vs @MockBean 테스트 차이 (0) | 2025.02.19 |
| Spring HTTP 메소드 매핑 (0) | 2025.02.18 |