Skip to content

✅ JSP는 .jar를 싫어해

CodingLuizy edited this page Sep 1, 2024 · 2 revisions

1. jsp war로 빌드해서 실행하기

Spring Boot 프로젝트에서 JSP를 템플릿 엔진으로 사용할 때 발생하는 JAR 빌드의 문제점과 WAR 빌드를 통한 해결 방법을 설명합니다.

2. JAR 빌드 시 문제점

2.1 문제 설명

Spring Boot 프로젝트에서 JSP를 사용하고 JAR로 빌드하면 애플리케이션 실행 시 JSP 페이지를 찾지 못하는 문제가 발생한다.

2.2 원인

  • JAR 파일은 실행 가능한 Java 아카이브 파일로, 내장 서블릿 컨테이너를 사용힌다.
  • 내장 서블릿 컨테이너는 JAR 파일 내부의 WEB-INF 디렉토리에서 JSP 파일을 찾지 못한다.
  • Spring Boot의 내장 Tomcat은 JAR 파일 내부의 JSP를 처리할 수 있는 기능이 제한적이다.

3. Gradle을 사용한 WAR 빌드 해결 방법

3.1 WAR 빌드 설정

  1. build.gradle 수정:

    plugins {
        id 'org.springframework.boot' version '2.5.0'
        id 'io.spring.dependency-management' version '1.0.11.RELEASE'
        id 'java'
        id 'war'
    }
    
    // WAR 파일명 설정 (선택사항)
    war {
        archiveFileName = 'your-application.war'
    }
    
    dependencies {
        implementation 'org.springframework.boot:spring-boot-starter-web'
        providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
        // 기타 필요한 의존성 추가
    }
    
  2. Spring Boot 애플리케이션 클래스 수정:

    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.boot.builder.SpringApplicationBuilder;
    import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
    
    @SpringBootApplication
    public class Application extends SpringBootServletInitializer {
        @Override
        protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
            return application.sources(Application.class);
        }
    
        public static void main(String[] args) {
            SpringApplication.run(Application.class, args);
        }
    }

3.2 WAR 파일 빌드

터미널에서 다음 명령어 실행:

./gradlew clean build

3.3 WAR 파일 실행

  1. 내장 Tomcat으로 실행:

    java -jar build/libs/your-application.war
    
    
  2. 외부 Tomcat 서버에 배포:

    • build/libs 디렉토리에서 생성된 WAR 파일을 Tomcat의 webapps 디렉토리에 복사
    • Tomcat 서버 시작

4. 추가 설정

4.1 JSP 관련 의존성 추가

JSP를 사용하기 위해 다음 의존성을 build.gradle에 추가:

dependencies {
    implementation 'org.apache.tomcat.embed:tomcat-embed-jasper'
    implementation 'javax.servlet:jstl'
}

4.2 application.properties 설정

src/main/resources/application.properties 파일에 JSP 뷰 설정 추가:

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

5. 결론

Gradle을 사용하는 Spring Boot 프로젝트에서 JSP를 템플릿 엔진으로 사용할 때는 WAR 파일로 빌드하는 것이 권장된다. WAR 빌드를 통해 JSP 파일을 올바르게 처리하고 애플리케이션을 정상적으로 실행할 수 있다.

Clone this wiki locally