개발 낙서장

[JSP] SpringBoot + JSP 설정 본문

Java

[JSP] SpringBoot + JSP 설정

권승준 2024. 12. 12. 19:59

JSP란?

JSP(Java Server Pages)는 Java를 기반으로 한 서버 측 웹 개발 기술로, HTML 내에 Java 코드를 작성하여 동적인 웹 페이지를 생성할 수 있는 기술이다.
JSP는 서블릿(Servlet)의 확장 개념으로, 사용자가 웹 서버에 요청을 보내면 서버에서 JSP 파일을 컴파일하여 결과를 HTML로 반환해준다.
여기서 서블릿은 자바에서 HTML 코드를 작성하여 웹 페이지를 생성하는 기술이다.

JSP의 주요 특징

  1. HTML과 Java의 결합
    • HTML 코드에 Java 코드를 삽입해 동적인 데이터 처리와 화면 구성이 가능
  2. 서블릿의 대체 역할
    • 기존 서블릿 코드보다 읽기 쉽고 관리가 편리함
  3. JSTL 및 커스텀 태그 지원
    • JSP 표준 태그 라이브러리(JSTL)로 재사용성과 코드 간소화
  4. MVC 패턴 구현
    • JSP는 주로 View 역할을 담당하며, 비즈니스 로직은 서블릿이나 Service에서 처리

JSP 동작 과정

  1. 사용자가 JSP 페이지를 요청
  2. 서버는 JSP를 서블릿으로 변환하고 컴파일
  3. 서블릿이 실행되어 HTML 결과를 생성
  4. 서버가 HTML을 사용자에게 반환

JSP의 장단점

장점

  • HTML과 Java를 쉽게 결합 가능
  • 동적인 웹 페이지를 쉽게 구현 가능
  • 다양한 Java 라이브러리와 연동 가능

단점

  • 규모가 큰 프로젝트에서는 코드 복잡도가 증가
  • React, Vue와 같은 최신 프론트엔드 프레임워크에 비해 유연성이 떨어짐

JSP는 과거 Java 기반 프로젝트에서 많이 사용되었던 기술로 현재는 Thymeleaf, Spring MVC 등 다양한 기술의 등장과 정형화로 대체되고 있다고 한다.

하지만 레거시 코드가 많은 기존 프로젝트에서는 JSP를 요구하므로 심도있게 학습할 필요가 있다고 생각이 되어 시작하게 됐다.

설정

build.gradle

plugins {
    id 'java'
    id 'war'
    id 'org.springframework.boot' version '3.3.5'
    id 'io.spring.dependency-management' version '1.1.6'
}

// ...

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'org.springframework.boot:spring-boot-starter-jdbc'

    // ...

    // JSP
    implementation 'org.apache.tomcat.embed:tomcat-embed-jasper'
    implementation group: 'org.glassfish.web', name: 'jakarta.servlet.jsp.jstl', version: '2.0.0'
}

tasks.named('test') {
    useJUnitPlatform()
}

JSP는 war 패키징만 가능하다고 한다. 따라서 plugins 설정에 war를 추가해주고 JSP 의존성도 추가해주면 된다.
참고로 Thymeleaf 의존성은 제거해야 한다.

application.properties

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

JSP가 들어갈 폴더를 정의한다. 이 설정을 하고 나면 Controller에서 전체 경로를 지정하지 않아도 알아서 인식해서 페이지를 반환해준다.

WEB-INF

JSP는 webapp/WEB-INF/views 안에서 관리해야 한다.
webapp은 웹 애플리케이션의 루트 디렉토리이고 WEB-INF는 webapp에 존재하는 디렉토리이다.
WEB-INF는 웹 애플리케이션의 보안을 담당하는데 해당 경로에 존재하는 관련 파일들을 사용자로부터 숨기는 역할을 한다.

코드 작성

JSP

<!DOCTYPE html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div>
    JSP
</div>
</body>
</html>

Controller

package com.bookhub.global.view;

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

@Controller
public class ViewController {

    @GetMapping("/test")
    public String index() {
        System.out.println("test");
        return "test";
    }
}

위의 설정을 통해 JSP 파일 이름만 반환해도 해당 파일을 찾아 웹 페이지를 출력해준다.

'Java' 카테고리의 다른 글

[Spring] Redis로 인기 검색어 구현  (0) 2024.12.18
[JSP] API 연동 및 데이터 출력  (1) 2024.12.13
[JAVA] compareTo  (0) 2024.11.26
[Spring] @RequestPart 테스트 HttpMediaTypeNotSupportedException  (0) 2024.05.17
Spring + Redis Cache  (0) 2024.05.13
Comments