본 포스트는 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에서 다룰 수 있게되고, 개발 환경 세팅 해보도록 하겠습니다.
📌 세팅 전에.. 톰켓관련해서는 톰켓을 추가하거나 톰켓을 설정하거나 하는 작업은 전혀 필요없습니다. 스프링부트는 내장된 톰켓을 사용하므로 자동 실행되는 것이 정상입니다. 따라서 톰켓관련해서는 전혀 만질 필요 없습니다.
프로젝트가 생성되면 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로 변경해주세요
정상적으로 실행된다면
위와 같은 출력화면을 볼 수 있습니다.
main -> resources 폴더에 있는 application.properties 파일에
spring.mvc.view.prefix=/WEB-INF/views/ spring.mvc.view.suffix=.jsp
위 코드 두 줄 추가해주세요. /WEB-INF/views/ 라는 경로의 jsp 파일을 인식하겠다는 의미입니다.
위 설정을 추가해주지 않으면 기본 설정인 resources/static 경로로 찾아가게 됩니다!
build.gradle 파일에 추가해주세요.
implementation 'org.apache.tomcat.embed:tomcat-embed-jasper' implementation 'javax.servlet:jstl:1.2'
implementation 'javax.servlet:jstl' 라고만 작성하게 되면 버전을 확인할 수 없다는 오류 발생할 수 있습니다..
반드시 생성되어 있는 기존 패키지의 하위 패키지로 다른 패키지를 만들어주세요.
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";
}
}
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/ 입력해주시면,
위 화면이 나와야 정상입니다!
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
처럼 원하는 포트를 입력해서 작성해주면 됩니다!