[Spring Boot] 1-2. 프로젝트 생성 (JSP 사용하기)
https://wonisdaily.tistory.com/91
[IntelliJ] 인텔리제이 Ultimate 설치 방법
그동안 java, jsp/servlet, Spring MVC 를 공부하면서 사용한 tool은 eclipse였다. IntelliJ에 대해서 들어보긴 했는데 그냥 쓰던게 편하겠지 싶어 이클립스를 사용했었는데, 이번에 인프런에서 김영한 강사님
wonisdaily.tistory.com
📑 프로젝트 생성
IDE는 IntelliJ를 사용하려고 한다. 설치 방법은 위의 포스팅 참고. intellij를 설치했다면 spring initializr에서 프로젝트를 생성한다. https://start.spring.io/
✔ project : Gradle - Groovy
✔ spring boot : 2.7.12 ( 3버전은 java 11 사용시 버전 호환에 문제가 있음)
✔ packaging : war ( jsp 사용하려면 war 선택 !! )
java : 11
📑 프로젝트 실행, 라이브러리 추가
IntelliJ 실행시킨 후 file -> open -> 오픈할 파일 경로 선택 후 build.gradle 클릭 후 ok.
JSP 사용을 위한 라이브러리를 추가해준다.
implementation 'org.apache.tomcat.embed:tomcat-embed-jasper'
plugins {
id 'java'
id 'war'
id 'org.springframework.boot' version '2.7.12'
id 'io.spring.dependency-management' version '1.0.15.RELEASE'
}
bootWar {
enabled = true
}
group = 'com.wish'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
repositories {
mavenCentral()
}
dependencies {
//implementation 'org.springframework.boot:spring-boot-starter-security'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.3.0'
implementation 'org.apache.tomcat.embed:tomcat-embed-jasper'
//외장 tomcat use
implementation 'org.springframework.boot:spring-boot-starter-tomcat'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
implementation 'javax.servlet:jstl'
compileOnly 'org.projectlombok:lombok'
developmentOnly 'org.springframework.boot:spring-boot-devtools'
runtimeOnly 'com.oracle.database.jdbc:ojdbc8'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
//testImplementation 'org.springframework.security:spring-security-test'
testImplementation("org.mybatis.spring.boot:mybatis-spring-boot-starter-test:2.3.0")
testCompileOnly 'org.projectlombok:lombok:1.18.12' // 테스트 의존성 추가
testAnnotationProcessor 'org.projectlombok:lombok:1.18.12' // 테스트 의존성 추가
}
tasks.named('test') {
useJUnitPlatform()
}
📑 DB 정보 입력
Oracle Driver를 dependencies에 추가했기 때문에 DB 정보를 입력해야된다. src -> main -> resources -> application.properties로 이동하여 코드를 작성해준다.
port는 8081로 꼭 지정해둬야하는 건 아니지만 충돌 예방을 위해 8081로 변경했다.
spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver
spring.datasource.url=jdbc:oracle:thin:@localhost:1521/xe
spring.datasource.username=아이디
spring.datasource.password=비번
server.port=8081
oracle 11g xe와 spl developer 설치, 계정 생성 방법이 궁금하다면 아래 링크를 참고하자.
https://wonisdaily.tistory.com/208
[ORACLE] SQL Developer 설치, 계정 생성
오라클을 편하게 사용하려면 sqldeveloper를 다운받는 게 좋다. 아래 링크는 오라클 11g XE 다운 받는 방법을 정리해둔 포스팅이니 참고 https://wonisdaily.tistory.com/207 [Oracle] 오라클 11g Express Edition(XE) 다
wonisdaily.tistory.com
📑 JSP 사용을 위한 프로젝트 구조 변경
Spring Boot의 기본 템플릿 엔진은 thymeleaf이지만, 국내에서는 주로 jsp를 이용하여 개발한다. 현 si에 몸 담구고 있는데 많은 프로젝트가 jsp를 사용하고 있기에 jsp로 개발 후 vue.js로 변경을 계획하고 있다.
Spring Boot에서 jsp를 사용하기 위해 webapp과 WEB-INF 폴더를 포함한 구조로 프로젝트 구성을 변경한다.
webapp : 스프링에서 웹을 정의하는 root 폴더
WEB-INF : J2EE 사양에 따라 정의된 표준 폴더 구조
view : JSP 파일들만 넣어 사용하는 폴더
JSP 사용을 위한 ViewResolver 설정 변경을 한다.
#jsp
spring.mvc.view.prefix=/WEB-INF/view/
spring.mvc.view.suffix=.jsp
프로젝트 구조가 변경되었으므로 ViewResolver의 경로(path)를 수정해야한다. Spring Boot는 환경 요소 값을 application.properties 파일에서 설정할 수 있다.
📑 root(localhost:8081)로 요청했을 때 hello world가 뜨도록 페이지 만들기
HomeController에 hello 메서드를 만든다. return에 String형의 index는 / 요청이 들어오면 index 파일로 접근하도록 하는데 반환되는 viewname을 뜻한다.
package com.wish.library;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class HomeController {
@GetMapping("/")
public String hello(){
return "index";
}
}
<index.jsp>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Spring Boot Application</title>
</head>
<body>Hello, Spring Boot App</body>
</html>
src/java/LibraryApplication의 main 메서드를 실행시키면 프로젝트가 실행된다.