개발/Spring

Spring Boot에서 JSP 페이지 접근 시 "Path with WEB-INF or META-INF" 경고 해결 방법

피터JK 2025. 2. 25. 16:00
728x90

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를 반환하도록 구성하면 정상적으로 동작합니다.

 

728x90