[SpringBoot] H2 Database CSV ๋ฐ์ดํฐ Import ํ๊ธฐ SpringBoot 2.7.2 , Java11 ์ฌ์ฉ 1. H2 Database ์ฌ์ฉ ์ค์ - build.gradle dependencies { ... // https://mvnrepository.com/artifact/com.h2database/h2 implementation group: 'com.h2database', name: 'h2', version: '2.1.214' // https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-jdbc implementation group: 'org.springframework.boot', name: 'spring-boot-starter-data-jdbc', versi.. [SpringBoot] Swagger ui 3.0 ์ฐ๋ํ๊ธฐ 1. Swagger 3.0 ์ธํ ํ๊ธฐ. ๊ตฌ๊ธ์ ๊ฒ์ํด์ ๋์จ ์ค์จ๊ฑฐ ์ธํ ๊ด๋ จ ํฌ์คํธ๋ ๋๋ถ๋ถ 2.X ๋ฒ์ ๋ ์ด๊ฑฐ๋, 3.0 ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ฐ์์์๋, ์ค์จ๊ฑฐ ์ธํ ์์ SWAGGER2๋ฒ์ ์ผ๋ก ๋ฎ์ถ์ด ์ฌ์ฉํ๋ ๊ธ์ด ํผ์ฌํ์ฌ ์ ๋ฆฌํ๊ณ ์ ๊ธ์ ์์ฑํ๋ค. ์ฐ์ ๋ด๊ฐ ์ ์ฉํ๊ณ ์ ํ๋ ์คํ๋ง ๋ถํธ์ ๋ฒ์ ์ 2.7.1 ๋ฒ์ ์ด๋ฉฐ, ์ค์จ๊ฑฐ๋ open api 3.0 OAS3 ๋ฌธ์ ๋ฒ์ ์ ๋ง๋ค๊ณ ์ ํ๋ค. - build.gradle // https://mvnrepository.com/artifact/io.springfox/springfox-boot-starter implementation group: 'io.springfox', name: 'springfox-boot-starter', version: '3.0.0' // http.. [SpringBoot] Rest Api Sample ๋ง๋ค๊ธฐ #2 https://lucete-stellae.tistory.com/96 [SpringBoot] Rest Api Sample ๋ง๋ค๊ธฐ #1 ๊ธฐ์กด์ ๊ธํ๊ฒ ์งํํ ์ฌ๋ด SMS API ์๋น์ค๋ฅผ ๋ง๋ค๊ณ ๋์, ์ ๋ฆฌ๋ ํ ๊ฒธ ์ํ๋ก REST API ์ํ ํ๋ก์ ํธ๋ฅผ ๋ง๋ค์ด๋ณด๊ธฐ๋ก ํ๋ค. ๊ธฐ๋ณธ์ ์ธ ๋ฒ์ ์ ๋ณด๋ ๋ค์๊ณผ ๊ฐ๋ค. 1. ๊ธฐ๋ณธ ํ๋ก์ ํธ ์ธํ JDK11 Spring Bo lucete-stellae.tistory.com #1์ ์ด์ด์ ์์ ํ ๋ด์ฉ์ ๊ธฐ์ ํฉ๋๋ค. API ์๋ฌ ์ฒ๋ฆฌ ์๋ฌ๊ฐ ๋ฐ์ํ ์ ์๋ ์ํฉ๋ถํฐ ์ ์ํด๋ณด์ ์๋น์ค ๋ก์ง ๋ด์์ Exception ์ด ๋ฐ์ํ๋ ๊ฒฝ์ฐ. ๋ก์ง ์ธ ์ ์ธ ๋ถ๋ถ ( ์๋ชป๋ URL ํธ์ถ, ๋ฑ ) ์์ ์๋ฌ๊ฐ ๋ฐ์ํ๋ ๊ฒฝ์ฐ. ์ ๋๊ฐ์ง ์ผ์ด์ค์์ ์๋ฌ๊ฐ ๋ฐ์ํ๋๋ผ๋, ๋์ผํ ํฌ๋งท์ผ๋ก ๋๊ฐ๊ฒ.. [SpringBoot] Rest Api Sample ๋ง๋ค๊ธฐ #1 ๊ธฐ์กด์ ๊ธํ๊ฒ ์งํํ ์ฌ๋ด SMS API ์๋น์ค๋ฅผ ๋ง๋ค๊ณ ๋์, ์ ๋ฆฌ๋ ํ ๊ฒธ ์ํ๋ก REST API ์ํ ํ๋ก์ ํธ๋ฅผ ๋ง๋ค์ด๋ณด๊ธฐ๋ก ํ๋ค. ๊ธฐ๋ณธ์ ์ธ ๋ฒ์ ์ ๋ณด๋ ๋ค์๊ณผ ๊ฐ๋ค. 1. ๊ธฐ๋ณธ ํ๋ก์ ํธ ์ธํ JDK11 Spring Boot 2.7.1 Gradle 7.4.1 (Project Initialize > VS Code Spring Extension > Create a Gradle Project) ๊ทธ๋ฆฌ๊ณ Build.gradle ์ ์ถ๊ฐํ dependency ๋ ์๋์ ๊ฐ๋ค. implementation 'org.springframework.boot:spring-boot-starter-web' compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.pr.. [SpringBoot] CORS ์ฒ๋ฆฌํ๊ธฐ 2022.07.06 - 2์ฐจ์ ์ผ๋ก ์ถ๊ฐ๋ ๋ด์ฉ์ด ์์ต๋๋ค. https://lucete-stellae.tistory.com/98 SpringBoot 2.7+ CORS ์ด์ ๋ฐ ํด๊ฒฐ๋ฐฉ๋ฒ ๊ฐ๋จํ๊ฒ ๋ง๋ API ์๋ฒ๋ฅผ ํ ์คํธ ํ๊ธฐ ์ํด ๋ก์ปฌ์์ ๋๋ฆฌ๋ ๋์ค ํด๋น ์ด์๋ฅผ ๋ง๋ฌ๋ค. ๊ตฌ์ฑ์ ๋ค์๊ณผ ๊ฐ๋ค. localhost:8080/users - SpringBoot API Server ์์ ์ ์ ๋ฐ์ดํฐ๋ฅผ ๋ฆฌํด. localhost:8090/index.html.. lucete-stellae.tistory.com 1. Global WebConfig import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.. [AOP] AOP Aspect ๋ฅผ ์ด์ฉํ ๋ก๊ทธ ์ฒ๋ฆฌ ํ๊ธฐ AOP ๋ฐ ๊ตฌ์ฑ์์ ๊ฐ๋จ ์ค๋ช ์คํ๋ง ํต์ฌ ๊ตฌ์ฑ ์์ ์ค ํ๋์ธ AOP ๋ ๋ก์ง์ ๊ด์ฌ์ฌ(Aspect)๋ผ๋ ๋ถ๋ถ์ผ๋ก ๋๋๋ ๊ฒ์ผ๋ก ์์ํฉ๋๋ค. OOP์์ ๋ชจ๋ํ์ ํต์ฌ ๋จ์๋ ํด๋์ค์ธ ๋ฐ๋ฉด, AOP์ ๋ชจ๋ํ ๋จ์๋ Aspect ์ ๋๋ค. ์ข ์์ฑ ์ฃผ์ ์ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ์ฒด๋ฅผ ์๋ก ๋ถ๋ฆฌํ๋๋ฐ ๋์์ด ๋๊ณ , AOP๋ ๊ฐ์ฒด์ ํก๋จ ๊ด์ฌ์ฌ๋ฅผ ๋ถ๋ฆฌํ๋๋ฐ ๋์์ด ๋ฉ๋๋ค. [์ฉ์ด ์ค๋ช ] Aspect - ํก๋จ ๊ด์ฌ์ฌ๋ฅผ ์ ๊ณตํ๋ ๋ชจ๋, ์๋ฅผ ๋ค์ด ์ง๊ธ ์์ฑํ๋ คํ๋ ๋ก๊น ์ ์ํ ๋ชจ๋์ ๋ก๊น ์ ์ํ Aspect ๋ผ๊ณ ํ๋ค. Join Point - AOP ํ๋ก๊ทธ๋จ์ ์ฌ์ฉํ์ฌ ์์ ํ ์ ํ๋ฆฌ์ผ์ด์ ์ ์์น Advice - ๋ฉ์๋ ์คํ ์ ์ด๋ ํ์ ์ทจํด์ผ ํ ์ค์ ์กฐ์น Point Cut - Advice๊ฐ ์คํ๋๋ ํ๋ ์ด์์ Join P.. [Spring Boot] ํ์ผ ์ ๋ก๋ ๋ง๋ค๊ธฐ -4- https://lucete-stellae.tistory.com/80 [Spring Boot] ํ์ผ ์ ๋ก๋ ๋ง๋ค๊ธฐ -3- https://lucete-stellae.tistory.com/78 ์ง๋๋ฒ์ ์ด์ด์ ํ์ผ ์ ๋ก๋ ํจ์์ ๊ธฐ๋ฅ์ ์ถ๊ฐ ํ์๋ค. 1. ํ์ผ ์ ๋ก๋ ํจ์์ ๊ณตํตํ 2. ํ์ผ ์์ธ์ฒ๋ฆฌ (์ฌ์ด์ฆ,ํ์ฅ์) 3. ํ์ผ ์ด๋ฆ ์ํธํ 4. ํ์ผ ์ ์ฅ ์์น๋ฅผ lucete-stellae.tistory.com ์ง๋ ๊ฒ์๊ธ์ ์ด์ด์, ํ์ผ ์ ๋ก๋ ๊ด๋ จ ์์ ์ ๋ค์ ์งํํ๋ค. ์ด๋ฒ์ ์ค์ ์ ๋ ๊ฒ์ ๋ค์ค ํ์ผ ์ ๋ก๋ ์ง์์ด๋ค. ํด๋น ํ์ผ ์ ๋ก๋ ๊ธฐ๋ฅ์ ๋ค๋ฅธ Boot ํ๋ก์ ํธ์์ ๊ฐ์ ธ๋ค ์ฌ์ฉํ๋๋ฐ, ํด๋น ์๋น์ค์์๋ ํ์ผ ์ ๋ก๋ ํ ์ ๋ก๋ํ ํ์ผ ๋ฆฌ์คํธ๋ฅผ ๋ฆฌํดํ์ฌ, ์ ๋ณด๋ฅผ ํํํด์ฃผ์ด์ผ ํ๊ธฐ์ ์ด๋ฒ ๋ค์ค ํ์ผ ์ ๋ก.. [Spring Boot] ํ์ผ ์ ๋ก๋ ๋ง๋ค๊ธฐ -3- https://lucete-stellae.tistory.com/78 ์ง๋๋ฒ์ ์ด์ด์ ํ์ผ ์ ๋ก๋ ํจ์์ ๊ธฐ๋ฅ์ ์ถ๊ฐ ํ์๋ค. 1. ํ์ผ ์ ๋ก๋ ํจ์์ ๊ณตํตํ 2. ํ์ผ ์์ธ์ฒ๋ฆฌ (์ฌ์ด์ฆ,ํ์ฅ์) 3. ํ์ผ ์ด๋ฆ ์ํธํ 4. ํ์ผ ์ ์ฅ ์์น๋ฅผ ํ์ ์ ๋ฐ๋ผ ๋ณ๊ฒฝ ๋ฐ ๋ ์ง๋ณ๋ก ํด๋ ๊ตฌ๋ถํ๊ธฐ - FIleUtil.java package com.file.example.util; import java.io.File; import java.io.InputStream; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.StandardCopyOption; import java.time.L.. [Spring Boot] ํ์ผ ์ ๋ก๋ ๋ง๋ค๊ธฐ -2- ์ด๋ฒ์ ์งํํ ๊ฒ์ ๊ฐ๋จํ๊ฒ, ์ ๋ก๋ ๋ ํ์ผ์ ์ ๋ณด๋ฅผ DB์ ์ ์ฅํ๋ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ค. ๋ณ๋ค๋ฅธ ๋ก์ง์ ์๊ณ ๋จ์ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ DB์ ์ ์ฅํ๋ค. - build.gradle : DB๊ด๋ จ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ถ๊ฐ (DB๋ Docker ๋ฒ ์ด์ค์ Postgres ์ฌ์ฉ) plugins { id 'org.springframework.boot' version '2.6.4' id 'io.spring.dependency-management' version '1.0.11.RELEASE' id 'java' id 'war' } group = 'com.file' version = '0.0.1-SNAPSHOT' sourceCompatibility = '11' repositories { mavenCentral() } dependencie.. [Spring Boot] ํ์ผ ์ ๋ก๋ ๋ง๋ค๊ธฐ -1- ๋ ์ฌ์ฉํ์ง๋ง, ์ง์ ๋ง๋ค์ด ๋ณด์ง๋ ๋ชปํ๋ ํ์ผ ์ ๋ก๋ ๋ง๋ค๊ธฐ๋ฅผ ํด ๋ณผ ์๊ฐ์ด๋ค. ์์ ํ๊ฒฝ์ ๋ค์๊ณผ ๊ฐ๋ค. 1. Java 11 2. Spring Boot 2.6.4 3. Gradle 7.2 4. War ๋ฐฐํฌ ์ฌ์ฉ FileUpload / Download ์๋น์ค๋ ๋ค์์ ์ ์ ๋ก ๊ฐ๋ฐํ๊ธฐ๋ก ํ๋ค. 1. Front์์ MultipartRequest๋ก ํ์ผ ์์ฒญ์ ๋ฐ๋๋ค. ํผ ํ๊ทธ ๋ด์์ Submitํ๋ ๋ฐฉ์์ ์ฐ์ ์ ์ผ๋ก ๊ตฌํํ๋ค. 2. Back์์๋ ์ด๋ฅผ ๋ฐ์ ์๋ฒ์ ์ ์ฅํ๊ณ , ๊ด๋ จ ์ ๋ณด๋ฅผ DB์ ์ ์ฅํ๋ค. 3. ์๋ฒ ๊ฒฝ๋ก์ ์ ์ฅํ๋ ๊ณผ์ ์๋ ํ์ฅ์ ๋ฑ์ ๋ํด ์์ธ์ฒ๋ฆฌ๋ ์ค์ ํ๋ค. 4. ํ์ผ ์ ๋ก๋๋ ๋ค์ค ์ ๋ก๋๋ฅผ ์ง์ํด์ผ ํ๋ฉฐ, ํ์ ์ ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ ๋ก๋ ํ๋ค. 5. ์ถํ, 1-4 ๊ตฌํ ์.. [Spring Boot] Tiles ์ฌ์ฉํ๊ธฐ. 1. build.gradle ์ถ๊ฐ // tiles implementation group: 'org.apache.tiles', name: 'tiles-jsp', version: '3.0.5' 2. tiles.xml ์ค์ ํ์ผ ์ถ๊ฐ webapp/WEB-INF/tiles/ ์ tiles.xml ์ค์ ํ์ผ ๋ง๋ค๊ธฐ. main์ด๋ผ๋ ์ ์๋ฅผ ๋ง๋ค๊ณ , ๊ทธ ์์ ํค๋/๋ค๋น๊ฒ์ด์ /ํธํฐ์ ์์ฑ์ ๋ง๋ค๊ณ ํ์ผ์ ์ง์ ํ๋ค. ํ์์๋ *.main.jsp ๋ผ๋ ์์ฒญ์ ๋ํด ์ฒ๋ฆฌํ ์ปจํ ์ธ ์์ฑ์ ์ง์ ํ์ผ๋ฉฐ main์์ ํ์ฅ๋ ์ ์์ด๋ค. {1}์ ์๋ฏธ๋ ์๋ฅผ ๋ค์ด, index.main.jsp ํ์ผ์ ์ฐพ๋ ๊ฒฝ์ฐ {1}์๋ ์ฒซ๋ฒ์งธ ํ๋ผ๋ฏธํฐ์ธ index๊ฐ ๋งคํ ๋์ด index.jsp ํ์ผ์ ์ฐพ๊ฒ ๋๋ค. ์ด๋ฅผ ์ด์ฉํ์ฌ ์ ์์ /comm/mem.. [Spring Boot] Tag Library ์ฌ์ฉํ๊ธฐ 1. TagLibrary build.gradle ์ถ๊ฐ // taglibs implementation group: 'org.apache.taglibs', name: 'taglibs-standard-impl', version: '1.2.5' 2. tld ์ค์ ํ์ผ ์ถ๊ฐ WEB-INF/tlds ํด๋์ ์ฌ์ฉํ ์ปค์คํ ํ๊ทธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํ์ผ ์์ฑ JSTL functions 1.2.5 cLibrary http://java.sun.com/jsp/jstl/functions {์ฌ์ฉํ ์ด๋ฆ} {์ฌ์ฉํ ํด๋์ค ํ์ผ ์์น( com.demo.lib.name )} {ํด๋์ค ํ์ผ ๋ด ๋ฆฌํดํ์ + ๋ฉ์๋ ๋ช ( String getString() )} 3. ์ฌ์ฉ์์ ์ฌ์ฉํ๊ณ ์ ํ๋ jsp ํ์ผ ๋ด๋ถ ์๋จ์ ์ ์ธํ์ฌ ์ฌ์ฉ usage : $.. ์ด์ 1 2 ๋ค์