본문 바로가기
Spring

Spring Boot에서 JSP 사용하기

by jayden-lee 2019. 4. 22.
728x90

기존 Spring Framework에서는 웹 애플리케이션을 구성할 때, View 영역에 JSP를 많이 사용했었다.

 

Spring Boot에서는 View 영역 관련하여 내용을 찾으면 JSP를 사용하는 것보다 Thymeleaf, FreeMarker 등을 사용한 예제를 더 많이 접했을 것입니다.

 

Spring Boot에서는 공식 문서에도 나와 있듯이 JSP를 사용하는 것을 권하지 않고 다른 템플릿 엔진을 추천하고 있다.

 

그렇더라도 JSP를 사용하고 싶다면 어떻게 설정해야 하는지 궁금할 것입니다.

 

그래서 이번 글에서는 Spring Boot에서 JSP를 사용하는 예제에 대해 살펴보겠습니다.

Spring Boot 프로젝트 생성

Spring Boot 프로젝트를 생성하셨다면 이 단계를 건너뛰셔도 됩니다.

Spring Boot 프로젝트는 https://start.spring.io/ 사이트에서 쉽게 생성할 수 있다. Generate Project 버튼을 클릭하면 프로젝트를 압축 파일로 다운로드 받을 수 있다.

 

pom.xml 또는 build.gradle 파일에 의존성 추가

필요한 의존성 패키지를 추가합니다.

 

Maven을 사용한다면 pom.xml에 추가하고, Gradle을 사용한다면 build.gradle에 추가합니다.

 

pom.xml

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

 

build.gradle

derendencies {
    compile('javax.servlet:jstl')
    compile("org.apache.tomcat.embed:tomcat-embed-jasper")
}

JSP 파일을 보관할 디렉토리 생성

Spring 애플리케이션은 시작할 때, application.properties 파일에 정의된 내용을 로드한다.
application.properties 파일에 spring.mvc.view.prefixspring.mvc.view.suffix 프로퍼티를 설정한다.

 

프로퍼티 값으로는 JSP 파일이 보관될 디렉토리(/WEB-INF/jsp/)와 확장자(.jsp)를 입력한다.

 

application.properties

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

 

디렉토리 생성
application.properties에 지정한 경로에 맞게 폴더를 생성한다.

 

JSP 파일 생성

jsp 폴더 하위에 hello.jsp 파일을 생성한다. 그리고 jsp 파일에는 아래와 같은 내용을 추가합니다.

 

hello.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"
         pageEncoding="utf-8" isELIgnored="false"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Spring Boot Application with JSP</title>
</head>
<body>
    Hello, Spring Boot App
</body>
</html>

Controller 생성

DispatcherServlet으로부터 경로를 전달 받아서 실행할 Controller가 필요합니다. controller 패키지를 생성하고 하위에 HelloController 클래스를 생성한다.

 

주의해야 할 점으로는 @SpringBootApplication 어노테이션이 붙은 클래스와 동일한 위치 또는 하위에 Controller 클래스를 생성해야 한다. Component Scan 할 때 Controller 클래스를 찾아서 자동으로 빈을 등록하기 때문이다.

 

HelloController.java

package com.jayden.demo.controller;

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

@Controller
@RequestMapping("/hello")
public class HelloController {

    @GetMapping
    public String hello() {
        return "hello";
    }
}

Spring Boot 애플리케이션 실행

Spring Boot 애플리케이션을 실행하고 난 뒤, 브라우저에 http://localhost:8080/hello 경로를 입력하자.

 

댓글