build.gradle에 JSP를 사용하기 위한 의존성을 추가합니다.
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web' // Spring Web 기본 의존성
implementation 'org.apache.tomcat.embed:tomcat-embed-jasper' // JSP 렌더링을 위한 Tomcat Jasper
implementation 'javax.servlet:jstl:1.2' // JSTL 지원
}
tomcat-embed-jasper:jstl:Spring Boot에서 JSP 파일은 기본적으로 src/main/webapp 디렉터리에 위치해야 합니다.
src
├── main
│ ├── java
│ ├── resources
│ │ └── application.properties
│ └── webapp
│ └── WEB-INF
│ └── views
│ ├── index.jsp
│ └── hello.jsp
WEB-INF/views/ 디렉터리 아래에 배치해야 합니다.WEB-INF 디렉터리에 두면 브라우저에서 직접 접근할 수 없고, 컨트롤러를 통해서만 접근 가능.application.properties 설정JSP 파일의 뷰 리졸버(View Resolver)를 Spring Boot에서 인식하도록 설정합니다.
# 기본 뷰 리졸버 설정
spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp
view.prefix:view.suffix:JSP 파일을 렌더링하기 위해 @Controller를 사용하여 뷰 이름을 반환합니다.
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class JspController {
@GetMapping("/hello")
public String hello(Model model) {
model.addAttribute("message", "안녕하세요, Spring Boot와 JSP!");
return "hello"; // /WEB-INF/views/hello.jsp 파일을 렌더링
}
}
src/main/webapp/WEB-INF/views/hello.jsp 파일을 생성하고 JSP 코드를 작성합니다.
<!DOCTYPE html>
<html>
<head>
<title>Spring Boot JSP</title>
</head>
<body>
<h1>${message}</h1>
</body>
</html>
애플리케이션을 실행합니다.
URL 호출:
<http://localhost:8080/hello>
출력 결과:
안녕하세요, Spring Boot와 JSP!
src/main/webapp/WEB-INF/views/에 배치되어야 하며, resources/templates와 같은 디렉터리에서는 작동하지 않습니다.| 항목 | 설정 내용 |
|---|---|
| Gradle 의존성 | tomcat-embed-jasper, javax.servlet:jstl 추가 |
| JSP 디렉터리 | src/main/webapp/WEB-INF/views/ |
| application.properties | spring.mvc.view.prefix, spring.mvc.view.suffix 설정 |
| 컨트롤러 | @Controller 사용하여 JSP 파일 이름 반환 |
| 주의사항 | JSP는 제한 사항이 많아, 최신 프로젝트에서는 대체 템플릿 엔진 권장 |