개인 공부/Spring Boot

스프링 부트 (Spring Boot)에서 JSP를 사용할 수 있도록 세팅하는 방법

이대곤 2023. 2. 22. 16:11

 

본 글은 이클립스(Eclipse) IDE그리고 Gradle을 기준으로 작성되었으나
아래의 글을 참고하면 IntelliJ IDE 혹은 Maven 환경에도 적용할 수 있습니다

1. 스프링부트 프로젝트 생성

 

바로 위 화면에서 Java 11버전을 사용한다고 해주었으므로

스프링 버전은 2.XX 버전으로 지정해줘야합니다

그래야 향후 에러가 발생하는 문제를 방지할 수 있습니다

 

2. JSP 관련 dependency 추가해주기

Gradle인 경우

implementation "org.apache.tomcat.embed:tomcat-embed-jasper"
implementation 'javax.servlet:jstl'

Maven인 경우

<dependency>
	<groupId>javax.servlet</groupId>
	<artifactId>jstl</artifactId>
</dependency>
<dependency>
	<groupId>org.apache.tomcat.embed</groupId>
	<artifactId>tomcat-embed-jasper</artifactId>
</dependency>

3. src\main 아래에 다음과 같이 폴더 및 jsp파일 생성해주기

스프링 부트는 src\main 하위에 존재하는 폴더 구조를 자동으로 생성하지 않기에 수동으로 생성해줘야 합니다.

<index.jsp>

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>    
    
<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Spring Boot Application</title>
</head>
<body>Hello, Spring Boot App ${obj}</body>
</html>

4. application.properties 파일에 JSP를 사용하기 위한 뷰 리졸버 설정 넣어주기

spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp

5.  요청을 받으면 jsp 파일을 분석해서 응답해줄 컨트롤러 생성

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class MyController {

    @GetMapping("/")
    public String hello(Model model) {
        return "index";
    }
}

6.  프로젝트 폴더 우클릭 - Gradle - Refresh Gradle Project 클릭해주기

다른걸 다 잘해줘도 이걸 해주지 않으면 변경된 설정이 반영되지 않아 예상하는대로 동작하지 않습니다.

번외1. 스프링부트에서 사용가능한 템플릿 엔진

공식문서에서 스프링부트의 템플릿 엔진으로 JSP가 추천되지 않는 방식이라고 하는데 이런 점은 알고있어야 할거 같습니다. 래도 한국 회사의 경우 JSP를 고수하고 있는데, 아마도 그 이유는 시장에 공급되는 많은 인력들이 JSP를 학습하여 학원에서 배출되기 때문인것으로 보입니다.

 

추천되는 템플릿 엔진은 FreeMarker, Groovy, Thymeleaf, Mustache 정도가 있습니다.

 

https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#getting-help

번외2. ChatGPT의 답변도 들어보자