-
Notifications
You must be signed in to change notification settings - Fork 1
✅ JSP는 .jar를 싫어해
CodingLuizy edited this page Sep 1, 2024
·
2 revisions
Spring Boot 프로젝트에서 JSP를 템플릿 엔진으로 사용할 때 발생하는 JAR 빌드의 문제점과 WAR 빌드를 통한 해결 방법을 설명합니다.
Spring Boot 프로젝트에서 JSP를 사용하고 JAR로 빌드하면 애플리케이션 실행 시 JSP 페이지를 찾지 못하는 문제가 발생한다.
- JAR 파일은 실행 가능한 Java 아카이브 파일로, 내장 서블릿 컨테이너를 사용힌다.
- 내장 서블릿 컨테이너는 JAR 파일 내부의
WEB-INF
디렉토리에서 JSP 파일을 찾지 못한다. - Spring Boot의 내장 Tomcat은 JAR 파일 내부의 JSP를 처리할 수 있는 기능이 제한적이다.
-
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' // 기타 필요한 의존성 추가 }
-
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); } }
터미널에서 다음 명령어 실행:
./gradlew clean build
-
내장 Tomcat으로 실행:
java -jar build/libs/your-application.war
-
외부 Tomcat 서버에 배포:
-
build/libs
디렉토리에서 생성된 WAR 파일을 Tomcat의webapps
디렉토리에 복사 - Tomcat 서버 시작
-
JSP를 사용하기 위해 다음 의존성을 build.gradle
에 추가:
dependencies {
implementation 'org.apache.tomcat.embed:tomcat-embed-jasper'
implementation 'javax.servlet:jstl'
}
src/main/resources/application.properties
파일에 JSP 뷰 설정 추가:
spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp
Gradle을 사용하는 Spring Boot 프로젝트에서 JSP를 템플릿 엔진으로 사용할 때는 WAR 파일로 빌드하는 것이 권장된다. WAR 빌드를 통해 JSP 파일을 올바르게 처리하고 애플리케이션을 정상적으로 실행할 수 있다.
- 💡 How To? Chat-GPT 리뷰어 도입하기
- 💡 How To? 도메인 설정하기
- 💡 How To? NGINX로 CORS 설정하기
- 💡 How To? JavaScript SDK 개발하기
- 💡 How To? Java SDK 개발하기
- 💡 How To? AWS Lambda로 부하 테스트 진행하기
- 💡 How To? Terraform + Locust로 부하 테스트 진행하기
- ⚙️ Refactoring: 로그 저장을 한번에 하자!
- 🚨 완벽하지 않은 샌드박스 테스트가 불러온 폭풍
- 💡 How To? 디버깅용 경쟁이 발생하지 않는 Long 카운터 만들기!
- 💡 How To? Queue의 poll과 push는 왜 한 스레드에서 담당하게 했을까?