/src/main/webapp/WEB-INF/* 경로에 jsp 파일이 있을 경우,
application.yml 에 아래처럼 설정을 하고서 개발 툴에서는 잘 작동하던 springboot 프로젝트가 jar로 빌드하면 경로를 못 찾고404 에러가 뜰 때!
// application.yml
spring:
mvc:
view:
prefix: /WEB-INF/view/
suffix: .jsp
원인은 jar로 된 빌드 파일은 더 이상 jsp를 지원하지 않는다고 합니다.
그래서 jar가 아닌 war로 빌드를 해야 합니다.
JSP Limitations
When running a Spring Boot application that uses an embedded servlet container (and is packaged as an executable archive), there are some limitations in the JSP support.
With Jetty and Tomcat, it should work if you use war packaging. An executable war will work when launched withjava -jar, and will also be deployable to any standard container. JSPs are not supported when using an executable jar.
Undertow does not support JSPs.
Creating a customerror.jsppage does not override the default view forerror handling.Custom error pagesshould be used instead.
There is aJSP sampleso that you can see how to set things up.
[출처] https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-jsp-limitations
다음은 intellij(인텔리제이)에서 war로 빌드하는 방법입니다.
build.gradle에 id 'war'와 providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'를 추가합니다.
(war파일을 생성하기 위해 추가하는 것입니다. springboot는 tomcat이 없어도 가상 애플리케이션 서버를 이용하여 구동시킬 수 있습니다. 아래 추가 내용은 gradle을 돌린 후에 Application을 실행하면 외부 tomcat을 이용하는 것으로 설정이 바뀌기 때문에 컴퓨터에 tomcat이 설치돼 있지 않으면 에러가 발생합니다. war파일 생성이 아니라 로컬에서 서버를 구동시키려면 추가했던 부분을 지우거나 tomcat을 설치하면 됩니다.)
[출처] https://cjh5414.github.io/springboot-war-deploy-intellij/
plugins {
id 'org.springframework.boot' version '2.1.9.RELEASE'
id 'io.spring.dependency-management' version '1.0.8.RELEASE'
id 'java'
id 'war' // 추가
}
group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat' // 추가
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
그리고서 인텔리제이 우측에 Gradle 탭을 클릭하 뒤,Run Configurations > spring-webboard를 클릭하면 war로 빌드됩니다.
빌드된 war 파일은 jar 파일과 마찬가지로 프로젝트/build/libs/경로에 생성됩니다.
'spring' 카테고리의 다른 글
[springboot] REST API 적용하기 (0) | 2020.10.14 |
---|---|
[springboot] MyBatis resultType이 Map일경우 key를 소문자로 만들기 (0) | 2020.10.14 |
[springboot] h2-console 접속이 안될 경우 문제 해결 (0) | 2020.10.14 |
[Spring] @ResponseBody, return null, MessageConverter (0) | 2020.10.09 |
[SpringBoot] Intellij(인텔리제이)에 SpringBoot(스프링부트) 프로젝트 시작하기 (0) | 2020.10.08 |
댓글