[Spring boot] Spring boot + Gradle + JSP 프로젝트 생성 + 개발환경 세팅

yunSeok·2024년 6월 27일
0

Spring Boot

목록 보기
1/4
post-thumbnail

본 포스트는 Intellij community(무료) 버전으로 진행합니다.

Spring Boot v3.3.1
Gradle
Java (jdk 17)
JSP
환경으로 진행합니다.

프로젝트 생성

유료버전은 Intellij내에서 스프링부트를 바로 만들 수 있지만 community 버전이므로 spring initializr에서 프로젝트를 받아와서 사용해야 하기 때문에 아래 페이지 접속해주세요.
https://start.spring.io/

바로 프로젝트 생성페이지가 나올텐데 버전이 3.x대 밖에 없어요.
잠깐 문서를 보면

Spring Boot 2.x.x 지원 종료되었기 때문이네요..!
스프링부트 3.x 버전은 자바 17부터 사용 가능하기 때문에 자바 17 없으면 설치 먼저 해주세요!

  • Group ID
    -Java의 패키지 이름 규칙을 따라야 한다.
    -도메인 명을 역순으로 표현

  • Artifact ID
    -해당 프로젝트의 이름을 사용
    -소문자로만 작성

  • Name
    물리적으로 생성되는 프로그램(프로젝트)의 이름을 정한다.
    Artifact와 비슷하여 같은 이름을 쓰는 경우가 많다.
    따로 작성하지 않아도 Artifact ID와 같은 이름이 등록됩니다.

  • Package
    WAR 파일은 웹 환경에서 실행되는 애플리케이션을 구성하는 것을 목표로 합니다. 웹으로 배포하려면 무조건 war로 선택 (JSP사용해 프로젝트 할 때도 war선택해야 합니다.)

File -> Open 으로 생성한 프로젝트를 열면됩니다. (압축 해제하고..!)

여기까지하면 프로젝트를 IntelliJ에서 다룰 수 있게되고, 개발 환경 세팅 해보도록 하겠습니다.


개발환경 세팅

📌 세팅 전에.. 톰켓관련해서는 톰켓을 추가하거나 톰켓을 설정하거나 하는 작업은 전혀 필요없습니다. 스프링부트는 내장된 톰켓을 사용하므로 자동 실행되는 것이 정상입니다. 따라서 톰켓관련해서는 전혀 만질 필요 없습니다.

1. 작동 테스트

프로젝트가 생성되면 main -> java에서 자동으로 생성되어있는 xxxApplication이라는 클래스를 먼저 실행해보겠습니다.

❗️❗️ 이런 오류가 발생한다면!?
Execution failed for task ':TestApplication.main()'.
Process 'command '/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home/bin/java'' finished with non-zero exit value 1

  • Try:
    Run with --stacktrace option to get the stack trace.
    Run with --info or --debug option to get more log output.
    Run with --scan to get full insights.
    Get more help at https://help.gradle.org.
    Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0.
    You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.
    For more on this, please refer to https://docs.gradle.org/8.8/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation.
    BUILD FAILED in 1s
    3 actionable tasks: 1 executed, 2 up-to-date

📌 혹시 실행했을 때 위와 같은 오류가 발생한다면 호환, 환경변수쪽 문제가 있다고 합니다.
Settings -> Build, Execution, Deployment -> Build tools -> Gradle -> Build and run using 을 Gradle에서 IntelliJ IDEA로 변경해주세요

정상적으로 실행된다면

위와 같은 출력화면을 볼 수 있습니다.

2. application.properties 설정

main -> resources 폴더에 있는 application.properties 파일에

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

위 코드 두 줄 추가해주세요. /WEB-INF/views/ 라는 경로의 jsp 파일을 인식하겠다는 의미입니다.

위 설정을 추가해주지 않으면 기본 설정인 resources/static 경로로 찾아가게 됩니다!

3. build.gradle 설정

build.gradle 파일에 추가해주세요.

implementation 'org.apache.tomcat.embed:tomcat-embed-jasper' implementation 'javax.servlet:jstl:1.2'

implementation 'javax.servlet:jstl' 라고만 작성하게 되면 버전을 확인할 수 없다는 오류 발생할 수 있습니다..

4. 테스트 컨트롤러

반드시 생성되어 있는 기존 패키지의 하위 패키지로 다른 패키지를 만들어주세요.
controller 패키지를 하위 패키지로 생성하고 HomeController를 생성하겠습니다.

package com.project.test.controller;

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

@Controller
public class HomeController {

    @GetMapping("/")
    public String home() {
        System.out.println("HomeController 실행");
        return "index";
    }
}

5. jsp

jsp파일은 main/webapp/WEB-INF/views/index.jsp 경로로 생성해주세요.

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <p>HOME 화면입니다.</p>

</body>
</html>

여기까지 작성한 다음,

Application 다시 실행해서
작성한 것들이 빌드 되도록해주세요.

실행 후 URL에 http://localhost:8080/ 입력해주시면,

위 화면이 나와야 정상입니다!


❗️❗️ Whitelabel Error Page가 나올때

  1. webapp/WEB-INF/views 루트에 index.jsp 파일이 있는지 확인!
  2. 컨트롤러 매핑 or 리턴 값 확인 해주세요.
  3. 경로 설정 or 인식이 되지 않을 때

1,2번은 확인 다시 해주고 3번의 경우에는 application.properties 파일에 spring.mvc.static-path-pattern=/webapp/WEB-INF/views/ 설정 추가해 맵핑 경로를 변경해보세요!


❗️❗️ 톰켓이 실행되지 않을 때


실행이 되면 내장 톰켓도 같이 실행이 되어야 하지만..
위 사진 처럼 톰켓관련 로그가 나오지 않으면

❗️❗️build.gradle 설정에

providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
설정이 있는지 확인하고 꼭 지워주세요!!!

지우고 다시 실행해보면

톰켓이 실행되고 서버 포트나 톰켓 버전등 톰켓관련 로그가 나오는 것을 확인 할 수 있습니다.

혹시 톰켓 포트를 변경하고 싶다면 application.properties 파일에 server.port=8080 처럼 원하는 포트를 입력해서 작성해주면 됩니다!

0개의 댓글

관련 채용 정보