Spring Boot Web에 JSP 적용

Hallelujah·2024년 11월 20일

Spring Boot

목록 보기
2/6

구구단 예시 코드
우편번호 찾기 예시 코드

1. Gradle 의존성 추가


build.gradle에 JSP를 사용하기 위한 의존성을 추가합니다.

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web' // Spring Web 기본 의존성
    implementation 'org.apache.tomcat.embed:tomcat-embed-jasper' // JSP 렌더링을 위한 Tomcat Jasper
    implementation 'javax.servlet:jstl:1.2' // JSTL 지원
}
  • tomcat-embed-jasper:
    • JSP를 처리하기 위한 Jasper JSP 엔진.
  • jstl:
    • JSP에서 JSTL 태그를 사용할 수 있도록 지원.

2. 디렉터리 구조 설정

Spring Boot에서 JSP 파일은 기본적으로 src/main/webapp 디렉터리에 위치해야 합니다.

디렉터리 구조

src
├── main
│   ├── java
│   ├── resources
│   │   └── application.properties
│   └── webapp
│       └── WEB-INF
│           └── views
│               ├── index.jsp
│               └── hello.jsp
  • JSP 파일은 반드시 WEB-INF/views/ 디렉터리 아래에 배치해야 합니다.
    • WEB-INF 디렉터리에 두면 브라우저에서 직접 접근할 수 없고, 컨트롤러를 통해서만 접근 가능.

3. application.properties 설정

JSP 파일의 뷰 리졸버(View Resolver)를 Spring Boot에서 인식하도록 설정합니다.

# 기본 뷰 리졸버 설정
spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp
  • view.prefix:
    • JSP 파일이 위치한 경로.
  • view.suffix:
    • JSP 파일의 확장자.

4. Controller 작성

JSP 파일을 렌더링하기 위해 @Controller를 사용하여 뷰 이름을 반환합니다.

예제

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

@Controller
public class JspController {

    @GetMapping("/hello")
    public String hello(Model model) {
        model.addAttribute("message", "안녕하세요, Spring Boot와 JSP!");
        return "hello"; // /WEB-INF/views/hello.jsp 파일을 렌더링
    }
}

5. JSP 파일 작성

src/main/webapp/WEB-INF/views/hello.jsp 파일을 생성하고 JSP 코드를 작성합니다.

<!DOCTYPE html>
<html>
<head>
    <title>Spring Boot JSP</title>
</head>
<body>
    <h1>${message}</h1>
</body>
</html>

6. 실행 및 테스트

  1. 애플리케이션을 실행합니다.

  2. URL 호출:

    <http://localhost:8080/hello>
    
  3. 출력 결과:

    • 브라우저에 JSP 파일이 렌더링되어 아래와 같이 표시됩니다:
    안녕하세요, Spring Boot와 JSP!
    

7. 주의사항

  1. Spring Boot와 JSP의 제약
    • JSP는 Spring Boot의 내장 서버(Jar 파일 배포 방식)에서 완벽히 지원되지 않습니다.
    • 특히, JettyUndertow를 사용할 경우 JSP 지원이 제한됩니다. JSP를 사용하려면 Tomcat을 사용해야 합니다.
  2. 템플릿 엔진 대안
    • Spring Boot는 JSP보다 Thymeleaf, Mustache, FreeMarker 등 더 현대적인 템플릿 엔진을 권장합니다.
    • JSP는 유지보수성과 유연성이 부족하며, 새로운 프로젝트에는 권장되지 않습니다.
  3. 디렉터리 위치
    • JSP 파일은 반드시 src/main/webapp/WEB-INF/views/에 배치되어야 하며, resources/templates와 같은 디렉터리에서는 작동하지 않습니다.

9. 정리

항목설정 내용
Gradle 의존성tomcat-embed-jasper, javax.servlet:jstl 추가
JSP 디렉터리src/main/webapp/WEB-INF/views/
application.propertiesspring.mvc.view.prefix, spring.mvc.view.suffix 설정
컨트롤러@Controller 사용하여 JSP 파일 이름 반환
주의사항JSP는 제한 사항이 많아, 최신 프로젝트에서는 대체 템플릿 엔진 권장

profile
개발자

0개의 댓글