IntelliJ IDEA 에서 프로젝트 생성시 Spring Initializr, Type “Gradle”, Java Version “11” 기준으로 Core – DevTools, Web – Web Dependencies 를 선택합니다. DevTools는 JSP 파일을 수정했을 때, 애플리케이션을 재기동 하지 않아도 변경사항이 바로 적용되도록 할 목적으로 추가하는 것입니다. main 디렉토리 하위에 webapp – WEB-INF – jsp 디렉토리를 생성하고 아래와 같이 코드를 수정하거나 파일을 추가합니다.

build.gradle
plugins { id 'org.springframework.boot' version '2.1.3.RELEASE' id 'java' } apply plugin: 'io.spring.dependency-management' apply plugin: 'war' // group = 'com.example' // version = '0.0.1-SNAPSHOT' sourceCompatibility = '11' archivesBaseName='spring-boot-jsp' repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' testImplementation 'org.springframework.boot:spring-boot-starter-test' runtimeOnly 'org.springframework.boot:spring-boot-devtools' // https://mvnrepository.com/artifact/javax.servlet/jstl compile group: 'javax.servlet', name: 'jstl', version: '1.2' // https://mvnrepository.com/artifact/org.apache.tomcat.embed/tomcat-embed-jasper compile group: 'org.apache.tomcat.embed', name: 'tomcat-embed-jasper', version: '9.0.16' }
application.properties
server.servlet.context-path=/ server.port=8080 spring.mvc.view.prefix=/WEB-INF/jsp/ spring.mvc.view.suffix=.jsp
HelloController.java
package com.example.demo; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestParam; @Controller public class HelloController { @GetMapping(value="/hello") public String hello(@RequestParam(value = "name", defaultValue = "World") String name, Model model) { model.addAttribute("name", name); return "hello"; } }
hello.jsp
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %> <!DOCTYPE html> <html lang="ko"> <head> <title>Hello World</title> </head> <body> <h1>Hello ${name}</h1> </body> </html>
DemoApplication 프로젝트를 실행후 테스트하면 정상적으로 동작되는 것을 알 수 있습니다.

만약 배포환경에서 실행할 경우에는 bootWar로 만들어줘야 실행가능한(Executable) Jar로 인식이 됩니다.

오른쪽 Gradle 항목의 Tasks – build – bootWar 를 실행하면 build – libs 디렉토리에 archiveBaseName 기준으로 war 파일이 생성되는데요. 이 파일을 원하는 디렉토리로 복사하거나 배포한 뒤에 아래와 같이 입력합니다.
$ java -jar spring-boot-jsp.war

마찬가지로 웹 브라우저에서 테스트를 해보면 정상적으로 동작되는 것을 알 수 있습니다.