이번에 프로젝트에 jsp 파일을 연동하는 설정이 필요했다.
그런데 이 프로젝트 설정에서부터 쉽지 않았기에 간단하게나마 해결 과정을 기록하고자 한다.
프로젝트 구성
프로젝트는 멀티 모듈 프로젝트이고, 애플리케이션을 실행시키는 bootstrap 모듈과 connector 모듈 두 가지가 존재한다.
문제상황
먼저 문제점은 설정을 다 마쳤음에도 jsp 페이지를 포워드하는 컨트롤러를 호출할 때 404 에러를 뱉어낸다는 것이었다.
컨트롤러 함수 호출까지는 정상적으로 되나 그 이후 jsp 파일을 못 찾는 현상이었다.
jsp 파일 404 키워드로 구글링을 해서 첫 몇 페이지는 모두 읽어보고 적용해 보고 많은 시간 삽질을 했다.
jsp 의존성 추가 및 설정
connector 모듈 build.gradle
dependencies {
// jsp 관련 의존성 추가
implementation("org.apache.tomcat.embed:tomcat-embed-jasper")
implementation("org.glassfish.web:jakarta.servlet.jsp.jstl")
implementation("jakarta.servlet:jakarta.servlet-api")
implementation("jakarta.servlet.jsp.jstl:jakarta.servlet.jsp.jstl-api")
}
jsp 관련 의존성을 추가하였고, 이외 bootstrap 모듈에도 스프링 웹 등 필요 의존성을 추가하였다.
yml 파일 설정
spring:
mvc:
view:
prefix: /WEB-INF/jsp/
suffix: .jsp
해결 과정
- WAR 빌드 설정: JSP 파일을 사용하기 위해 프로젝트를 WAR로 빌드해야 했다. 따라서 bootstrap 모듈의 build.gradle.kts에 id("war") 플러그인을 추가했다.
- 실행 방법: 프로젝트를 실행할 때는 반드시 Gradle 탭에서 project > tasks > application > bootRun을 통해 실행해야 한다. 평소처럼 IDE의 우측 상단의 실행 버튼으로 실행하면 jsp 파일을 찾지 못하고 404 에러가 발생했다.
- JSP 파일의 위치: JSP 파일은 bootstrap 모듈 내의 webapp/WEB-INF/jsp 경로에 위치시켜야 했다. 처음에는 connector 모듈에 JSP 파일을 넣었으나, 경로를 찾지 못해 404 에러가 발생했다.
프로젝트 구조 예시:
project-root
│
├── bootstrap
│ ├── src
│ │ ├── main
│ │ │ ├── kotlin
│ │ │ │ └── com
│ │ │ │ └── example
│ │ │ │ └── Application.kt (main 함수)
│ │ │ └── webapp
│ │ │ └── WEB-INF
│ │ │ └── jsp
│ │ │ └── yourJspFile.jsp
│ │ └── resources
│ │ └── application.properties
│ └── build.gradle.kts
│
├── connector
│ ├── src
│ │ ├── main
│ │ │ ├── kotlin
│ │ │ │ └── com
│ │ │ │ └── example
│ │ │ │ └── controller
│ │ │ │ └── YourController.kt
│ └── build.gradle.kts
└── build.gradle.kts
'Spring' 카테고리의 다른 글
클린 스프링: 스프링 개발자를 위한 클린 코드 전략 - 이일민(토비) (28) | 2024.11.18 |
---|---|
설정 파일을 통한 환경별 Property 관리 (0) | 2024.07.26 |
BasicErrorController 상속받아 커스텀하기 (0) | 2024.05.01 |