오늘은 스프링부트에서 JSP를 사용하는법에 대해서 글을 작성하고자한다.
스프링부트에서는 이제 JSP를 사용하지않고 Thymeleaf를 공식적으로 지원하고있다.
하지만 국내에선 JSP를 사용하는 곳이 많고 나 또한 JSP를 사용해보고 경험을 해보고 싶었기에 방법을 찾고 적용해보았다.
우선 빌드는 Gradle을 기준으로 설명한다.
프로젝트를 생성하고 타입은 Gradle - Groovy를 선택후 패키지 생성은 Jar이 아닌 War을 사용하여 생성한다.
그리고 종속성은 Spring Web과 Lombok을 선택후 프로젝트를 생성한다.
생성후 Bulid.gradle로 들어가 dependencies 안에 4줄을 추가한다.
implementation 'org.apache.tomcat.embed:tomcat-embed-jasper'
implementation 'jakarta.servlet:jakarta.servlet-api' //스프링부트 3.0 이상
implementation 'jakarta.servlet.jsp.jstl:jakarta.servlet.jsp.jstl-api' //스프링부트 3.0 이상
implementation 'org.glassfish.web:jakarta.servlet.jsp.jstl' //스프링부트 3.0 이상
다른 블로그에서는 javax로 잡는데 스프링부트 3.0이상부터는 javax는 지원하지않는다 그러하므로 jakarta인 종속성을 공식사이트에서 들어가서 찾았다.
그런다음 application.properties로 들어가 두줄을 추가한다.
spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp
만약 .yml이면
spring:
mvc:
view:
prefix: /WEB-INF/views/
suffix: .jsp
jsp파일을 /WEB-INF/views안에있는 .jsp 파일을 찾겠다는 뜻이다.
그러면 jsp를 사용할 준비는 끝났다 컨트롤러를 생성해보자
@Controller
public class HomeController {
@GetMapping("/")
public String home() {
return "index";
}
}
그리고 main패키지안에 패키지들을 추가해보자
webapp/WEB-INF/views
세개의 패키지들을 각각생성한후 index.jsp를 생성해보자.
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<h1>TEST JSP</h1>
</body>
</html>
그리고 스프링부트를 실행한다.
제대로 생성된 모습이다.

혹시나 404에러가 발생할 수 있다.
그러면 오른쪽상단에 현재 스프링부트를 실행하기위한 어플리케이션이 있을것이다 그것을 클릭하거나 콤보박스를 클릭하면 구성 편집이 있을것이다 영문 기준으로는 Edit Configurations..일것이다.
선택하면 실행/디버그 구성이 뜰텐데 작업 디렉터리란이 있을것이다. 아니면 현재 인텔리제이 신버전은 옵션 수정에 숨겨져있을텐데 옵션 수정을 누르면 작업 디렉터리가 보일것이다. 그것을 활성화 시켜주면 뜬다.
그리고나서 작업 디렉토리 안에 이 한줄을 넣어주면 jsp파일이 실행이 될것이다.
$MODULE_WORKING_DIR$
혹여나 타임리프를 이미 사용하고있다면 jsp와 혼용하여 사용은 불가능하다 만약 종속성에 타임리프가 이미 설정되어있다면 타임리프를 사용하거나 타임리프를 주석처리하여 jsp를 사용하거나 해야한다.
이것으로 인텔리제이 스프링부트 JSP 실행 관련해서 글을 마친다.
'Spring' 카테고리의 다른 글
| Vue.js와 SpringBoot 연동하기 (0) | 2023.08.01 |
|---|---|
| 스프링부트를 빌드하고 터미널로 직접 실행해보자. (0) | 2023.07.31 |
| 최근 비밀번호 3개 저장 그리고 변경하려고하면 막는 메서드 구현 (0) | 2023.07.18 |
| OAuth2 내용 정리 (0) | 2023.07.14 |
| Thymeleaf 내용 정리 (0) | 2023.07.12 |