Spring

[Spring] Spring Boot + JSP + Gradle + IntelliJ

allempty_sheep 2024. 6. 27. 10:25
반응형

포트폴리오를 위한 스프링 프로젝트를 하나 생성 할 것이다.

해당 프로젝트는 현재 개발중인 게임의 홈페이지를 만들 예정이다.

먼저 스프링 프로젝트를 하나 생성해주자.

 

https://start.spring.io/

 

해당 홈페이지에서 기본 프로젝트를 쉽게 만들어 줄 수 있다.

 

사용할 것은 다음과 같다. 

배운것을 사용해 보기위해 여러가지를 추가 해 보았다.

Spring Web,

Oracle Driver,

Thymeleaf 

Lombok

Spring Boot Dev Tools

MyBatis Framework

 

GENERATE 를 클릭하여 파일을 받아주자.

압출을 풀고 해당 파일을 원하는 곳(c 드라이브 같은)에 넣어주고 열어보자

intelliJ 를 이용해서 열어보면 아래와 같은 프로젝트가 나올 것이다.

프로젝트에 몇가지를 추가, 수정 해보자.

 

1. 폴더 구조 변경.

JSP 를 사용하기 위해 webapp, WEB-INF 등 폴더를 주가 할 것이다.

main 폴더 아래에 webapp 폴더 추가.

 

 

webapp 폴더 아래에 WEB-INF 폴더 추가.

 

WEB-INF 폴더 아래에 views 폴더 추가.

 

views 폴더 아래에 index.jsp 파일 추가.

 

 

index.jsp 내용을 추가한다.
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	테스트 메인 페이지 입니다.
	홈 컨트롤러 연결 테스트 name의 값은 ${name} 입니다.
</body>
</html>

 

JSP 테스트를 위하여 컨트롤러를 만들어서 값을 보내 볼 것이다.

main - java -com.(패키지명) 아래에 폴더 및 컨트롤러를 만들어 보자.

 

controller 패키지 생성

 

HomeController.java 파일 생성

 

컨트롤러의 내용을 입력 해 주자.

package 주소를 제외한 내용을 넣어주자.

package com.mangdew.controller;

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

@Controller
public class HomeController {

    @RequestMapping(value = "/", method = RequestMethod.GET)
    public String home(Model model) {
        //System.out.println("home controller start");
        model.addAttribute("name", "HomeController name");
        return "index";
    }

}

 

JSP 기본 폴더 구성을 하였으면 Gradle 설정을 해 주어야 한다.

build.gradle 으로 들어가 다음을 추가한다.

	implementation 'org.apache.tomcat.embed:tomcat-embed-jasper'
	implementation 'jakarta.servlet:jakarta.servlet-api' //스프링부트 3.0 이상
	implementation 'jakarta.servlet.jsp.jstl:jakarta.servlet.jsp.jstl-api' //스프링부트 3.0 이상
	implementation 'org.glassfish.web:jakarta.servlet.jsp.jstl' //스프링부트 3.0 이상

 

application.properties 안의 내용을 수정한다.

(main - resources 안에 있다.)

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

server.servlet.jsp.init-parameters.development=true

 

View Page 를 지정 해주는 것이다. 접두어 접미어를 알려주고 해당파일을 찾아간다.

prefix : 접두어

suffix : 접미어

 

서버가 재시작없이 적용 될 수 있게 해준다.

server.servlet.jsp.init-parameters.development=true

 

데이터 베이스를 아직 연결 하지 않았으니 설정 해 주어야 한게 하나 더 있다.

main - java - com.(패키지명) 안에 어플리케이션 파일이 있을 것이다.

 

Oracle Driver를 추가 하였지만 아직 연결 하지 않았다.

해당 파일에 아직 디비가 없다고 알려주어야 한다.

아래와 같이 변경 할 것이다.

package com.mangdew;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;

@SpringBootApplication(exclude={DataSourceAutoConfiguration.class})
public class MangdewApplication {

	public static void main(String[] args) {
		SpringApplication.run(MangdewApplication.class, args);
	}

}

 

이제 코끼리를 눌러서 gradle 이 변경 된 것을 적용 해 주자.

 

Gradle 설정도 바꾸어 주자.

File - Settings 안에서 

Build, Execution, Deployment - Build Tools - Gradle 으로 이동한다.

Build and run Using
Run tests using
값을 IntelliJ IDEA 로 변경.

 

 

어플리케이션을 실행 해 보자.

 

 

 

홈페이지에 들어가자 다음과 같은 에러가 나왔다.

Error resolving template [index], template might not exist or might not be accessible by any of the configured Template Resolvers

 

gradle 에서 thymeleaf 를 주석 처리 해주자. 해당 플러그인 때문에 에러가 난거 같다.

 

이후 접속 시 접속이 잘 되었다.