YOUNG-JIN.OH
웃어라. 온 세상이 너와 함께 웃을 것이다.
울어라. 너 혼자만 울게 될 것이다.

Spring Boot 에서 JSP 설정

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

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

You may also like...

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.