Window - Eclipse Marketplace - sts ๊ฒ์ ์๋ก์ด Spring ํ๋ก์ ํธ๋ฅผ ์์ฑํฉ๋๋ค. ํ๋ก์ ํธ ์ค๋ฅธ์ชฝ ํด๋ฆญ - properties - Project Facets ์ ์ฉํด์ฃผ์๊ณ , pon.xml ๋ค์ด๊ฐ๋๋ค. ์ฒดํฌํ ๋ถ๋ถ ๋ณ๊ฒฝ ํด์ฃผ์๋ฉด ๋ฉ๋๋ค. ์คํฌ๋กค ๋ฐ์ผ๋ก ์ญ ๋ด๋ ค์ plugin๋ ๋ฐ๊ฟ์ค๊ฒ์~ ์ด๋ ๊ฒ ํ๊ณ ์ ์ฅํ๋ฉด ๋ฉ์ด๋ธ์ด ์ด์ฌํ ๋ค์ด๋ก๋ํฉ๋๋ค. ์ด์ ๋ง๋ฐํฐ์ค, ์คํ๋ง ์ฐ๊ฒฐ ๊ด๋ จ, ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฑ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ค์ด๋ก๋ํ๊ณ ์ค์ ํด ์ค๊ฒ์. ์ผ๋จ, ์ ๋ spring ์ค์ ํ์ผ์ ํ ๋ฒ์ ๋ณด๊ณ ์ถ๊ธฐ ๋๋ฌธ์ web.xml ์์ ์ด ๋ถ๋ถ์ ํด๋์ ๋ฃ์ด ์ฃผ์์ด์ ๊ทธ๋ฌ๋ฉด ์๋ ๊ทธ๋ฆผ์ฒ๋ผ ๊ฐ์ด ๊ด๋ฆฌํ ์ ์์ต๋๋ค! ๊ทธ๋ฆฌ๊ณ ์ค์ํ๊ฒ์ filter๋ฅผ ์ด์ฉํด์ ์ธ์ฝ๋ฉ์ ํด์ค๋๋ค. web.xml์ ์์ฑํด์ฃผ์๋ฉด ..
์ค์นํ ๊ฒ 1. JDK 2. apache tomcat * - jdk - javac, jheap ๋ฑ - jre - Java Class Library JDK ์ค์น ๋ง์ ๊ณต๊ณต๊ธฐ๊ด๊ณผ ํ๋ก์ ํธ์์ 1.8์ ๋ง์ด ์ฌ์ฉํ๋ค๊ณ ์ถ์ธ๋ผ๊ณ ํ๊ธฐ ๋๋ฌธ์ JDK8 (jdk1.8)์ ๋ค์ด ๋ฐ๋๋ค. (ํ๋ก์ ํธ๋ง๋ค ๋ค๋ฅด๊ฒ ๋ค์ด๋ฐ์ผ๋ฉด ๋๋ค!) https://www.oracle.com/java/technologies/javase-downloads.html 1. ๋ด PC ์ค๋ฅธ์ชฝ ๋ฒํผ - ์์ฑ - ๊ณ ๊ธ ์์คํ
์ค์ - ํ๊ฒฝ๋ณ์ - ์์คํ
๋ณ์์์ ์๋ก ๋ง๋ค๊ธฐ 2. Path - ํธ์ง - ์๋ก๋ง๋ค๊ธฐ %JAVA_HOME%\bin - ํ์ธ : cmd์ฐฝ java -version ๋ฒ์ ์ด ์ถ๋ ฅ๋๋ฉด ์ฑ๊ณต apache tomcat ์ค์น http://tom..
2020/05/16 - [WEB/Spring] - ์ด๋ฏธ์ง ์
๋ก๋ (Spring+Ajax) ์ด๋ฏธ์ง ์
๋ก๋ (Spring+Ajax) Hyper ํ๋ก์ ํธ๋ฅผ ํ๋ฉด์ ๊ณผ์ ์ค ์ด๋ ค์ํ๋ ํ์ผ ์
๋ก๋์ ๋ํด์ ๋ค์ ๊ณต๋ถํ๊ฒ ๋์๋ค. commons-fileupload๋ฅผ ์ฌ์ฉํ์๊ณ pom.xml์ ์ถ๊ฐํด์ค์ผ ํ๋ค. Ajax๋ก ๊ตฌํํด์ผ ํ๋ Controller์ @ResponseBody๋ฅผ ๋ถ. aejeong.com ์ด์ด์ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ฅผ ๊ตฌํํ๊ฒ ์ต๋๋ค. var upload = document.querySelector('#file'); upload.addEventListener('change',function (e) { var get_file = e.target.files; var selected_file = upload.fi..
Hyper ํ๋ก์ ํธ๋ฅผ ํ๋ฉด์ ๊ณผ์ ์ค ์ด๋ ค์ํ๋ ํ์ผ ์
๋ก๋์ ๋ํด์ ๋ค์ ๊ณต๋ถํ๊ฒ ๋์๋ค. commons-fileupload๋ฅผ ์ฌ์ฉํ์๊ณ pom.xml์ ์ถ๊ฐํด์ค์ผ ํ๋ค. Ajax๋ก ๊ตฌํํด์ผ ํ๋ Controller์ @ResponseBody๋ฅผ ๋ถ์ฌ์ค์ผ ํ๋ค ์ด๊ฑฐ ๋ํ ์ฌ์ฉํ๋ ค๋ฉด pom.xml์ jackson-mapper๋ฅผ ์ถ๊ฐํด์ค์ผ ํ๋ค. pom.xml์ ์ถ๊ฐํด์ผ ํ ๊ฒ. (mvnrepository.com) 1. commons-fileupload 2. jackson-mapper ์ ์ผ ๋จผ์ ํ์ผ ์
๋ก๋๋ฅผ ๊ตฌํ ํ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ฅผ ํ๊ฒ ๋ค. 1. spring ํด๋์์ xxx-context.xml ์ ํ์ผ ๋ฆฌ์กธ๋ฒ๋ฅผ ์ง์ ํด์ค์ผ ํ๋ค. + application / servlet -context์ ์ฐจ์ด ๋๋ณด๊ธฐ ์ด ๋ ..
์ฌ์ฉ์ ์ ์ฒด ์กฐํ๋ฅผ ํด๋ณด์๋ค. ์ฒ์ ์ฌ์ฉํด๋ด์ ์ฝ์ง์ ์กฐ๊ธ ํ๋๋ฐ ์ฌ๋ฏธ์์๊ณ , ๋ฌด์๋ณด๋ค ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ฒ ํํํ ์ ์๊ณ ๊ธฐ๋ฅ์ด ๋ง์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ผ์ ์ ์ตํ๋ค. ๋จผ์ ์ฌ์ฉํ๋ ค๋ฉด ์คํฌ๋ฆฝํธ๋ฅผ ํฌํจํด์ค์ผ ํ๋ค. www.cdn.datatables.net/1.10.21/css/jquery.dataTables.min.css www.cdn.datatables.net/1.10.21/js/jquery.dataTables.min.js HTML ์ฝ๋ ์ฌ์ฉ์ID ์ฌ์ฉ์ ์ด๋ฆ ์ ํ๋ฒํธ E-mail ๊ถํ JavaScript ์ฝ๋ $(document).ready(function() { $("#deviceTable").DataTable({ "pageLength": 10, ajax:{ url:"./userAll.do", type:"GET"..
1.ํฐ์บฃ ์ธ์
์ ์ฌ์ฉํ๋ค. - ๊ธฐ๋ณธ ์ ํ๋๋ ๋ฐฉ์์ด๋ค. - WAS์ ์ ์ฅ๋๋๋ฐ 2๋์ด์์ WAS๋ก ๊ตฌ๋๋๋ ํ๊ฒฝ์์๋ ์ถ๊ฐ ์ค์ ์ด ํ์ํ๋ค. 2.MySQL๊ณผ ๊ฐ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ธ์
์ ์ฅ์๋ก ์ฌ์ฉํ๋ค. - ๊ฐ์ฅ ์ฌ์ด ๋ฐฉ๋ฒ์ด๋ค. - ๋ก๊ทธ์ธ ์์ฒญ์ DB IO๊ฐ ๋ฐ์ํ ์ ์๋ค. 3.Redis ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ DB๋ฅผ ์ธ์
์ ์ฅ์๋ก ์ด์ฉํ๋ค. ์ฌ์ฉ๋ฃ๋ฅผ ์ง๋ถํด์ผํ๋ค! ์๋น์ค๊ฐ ์ปค์ง๋ ๊ณ ๋ ค! 'org.spirngframework.session:spring-session-jdbc' ๋ฅผ gradle์ ๋ฑ๋กํด์ฃผ๊ณ application.prorperties์ spring.session.store-type=jdbc ๋ง ๋ฑ๋กํ์ฃผ๋ฉด jpa๊ฐ ์ธ์
ํ
์ด๋ธ์ ์๋์ผ๋ก ์์ฑํ์ฌ ์ธ์
์ ์ฅ์๊ฐ ์ง์ ๋๋ค!
Enum์ ํตํด ์ป๋ ๊ธฐ๋ณธ์ ์ธ ์ฅ์ ๋ฌธ์์ด๊ณผ ๋น๊ตํด, IDE์ ์ง์์ ๋ฐ์ ์ ์๋ค. ์๋์์ฑ, ์คํ๊ฒ์ฆ, ํ
์คํธ ๋ฆฌํฉํ ๋ง ๋ฑ ํ์ฉ ๊ฐ๋ฅํ ๊ฐ๋ค์ ์ ํํ ์ ์๋ค. ๋ฆฌํฉํ ๋ง์ ๋ณ๊ฒฝ ๋ฒ์๊ฐ ์ต์ํ ๋๋ค. ๋ด์ฉ์ ์ถ๊ฐ๊ฐ ํ์ํด๋, Enum์ฝ๋์ธ์ ์์ ํ ํ์๊ฐ ์๋ค. Java Enum์ธ ๊ฒฝ์ฐ int๊ฐ์ด ์๋๋ผ ์์ ํ ๊ธฐ๋ฅ์ ๊ฐ์ง ํด๋์ค์ด๋ค! ์ฐ์ enumํ์
์ผ๋ก ํด๋์ค๋ฅผ ์์ฑํด์ผํ๋ค ์ด์ ์์๋ฅผ ์ ์ธํ๋ฉด ๋๋๋ฐ, ๊ด๋ก์ ์ผ๋ก ๋ชจ๋ ๋๋ฌธ์๋ก ์์ฑํ๋ค. Entityํด๋์ค์ ์ ์ธํด์ฃผ๊ธฐ ์ํด์ String์ด ์๋ enum์ ์ ์ธํ๋ค. JPA๋ฅผ ์ฌ์ฉํ๋ฏ๋ก @Enumerated(EnumType.SPRING)์ ์ ์ธํ๋ฉด Enumํ๋๊ฐ ํ
์ด๋ธ์ ์ ์ฅ์ ์ซ์ํ์ด ์๋, Enum์ ์ด๋ฆ์ด ์ ์ฅ๋๋ค. ์ฌ๊ธฐ์๋ GUEST,USER..
๊นํ๋ธ์ ์ต์ํ์ง ์์์ ์๊พธ ๋ญ๊ฐ ํ์ด์ง๋์ง non-fast-forward ์ค๋ฅ๊ฐ ์์ฃผ ๋ฌ๋ค..... ใ
ใ
ใ
ใ
์ผใ
์ผ์์ผใ
ใ
Advanced...๋ฅผ ๋๋ฌ์ ๊ธฐ์กด์ ์๋๊ฑฐ ํด์งํต ๋๋ฌ์ ์ญ์ ํด์ค๋ค์์ Source ref์ master๋ก ์ถ๊ฐํด์ค๋ค. ๋ง์ง๋ง์ผ๋ก Marge์์ผ์ฃผ๊ณ Push!
์คํ๋ง ์ํ๋ฆฌํฐ๋ ๋ง๊ฐํ ์ธ์ฆ๊ณผ ์ธ๊ฐ ๊ธฐ๋ฅ์ ๊ฐ์ง ์คํ๋ง ํ๋ ์์ํฌ์ด๋ค. ์ธ์ฆ์ด๋, ๋ณดํธ๋ ๋ฆฌ์์ค์ ์ ๊ทผํ ๋์์ ๋ํด ๋๊ตฌ์ธ์ง, ์์
์ ์ํํด๋ ๋๋์ง ํ์ธํ๋ ๊ณผ์ ์ด๋ค. ์ธ๊ฐ๋, ์ธ์ฆ ์ดํ์ ํด๋น ๋ฆฌ์์ค์ ๋ํด ์ ๊ทผ ๊ฐ๋ฅํ ๊ถํ์ ๊ฐ์ง๊ณ ์๋์ง ํ์ธํ๋ ๊ณผ์ ์ด๋ค. ๋ณด์๊ณผ ๊ด๋ จํด์ ์ฒด๊ณ์ ์ผ๋ก ๋ง์ ์ต์
์ ์ ๊ณตํด์ฃผ๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฐ์๊ฐ ์ผ์ผ์ด ๋ณด์ ๊ด๋ จ ๋ก์ง์ ์์ฑํ์ง ์์๋ ๋๋ค. ๊ตฌ๊ธ ๋ก๊ทธ์ธ ๊ธฐ๋ฅ ๊ตฌํํด๋ณด์! https://console.cloud.google.com/ ๋ก ์ ์ํด์ ์๋ก์ด ํ๋ก์ ํธ๋ฅผ ์์ฑํ๋ค. ํ๋ก์ ํธ๋ฅผ ์ ํํ ํ API ๋ฐ ์๋น์ค -> ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด OAuth ํด๋ผ์ด์ธํธ ID ํด๋ฆญ! ๋์ ํ๋ฉด ์ค ์ธ๋ถ/๋ด๋ถ๊ฐ ์๋๋ฐ ์ธ๋ถ๋ฅผ ํด๋ฆญํ๋ค. ์ ํ๋ฆฌ์ผ์ด์
์ด๋ฆ : ์ฌ์ฉ์์๊ฒ ๋
ธ์ถ๋ ์ ํ๋ฆฌ์ผ์ด..
์ง์ ๋ ํ
ํ๋ฆฟ ์์๊ณผ ๋ฐ์ดํฐ๊ฐ ํฉ์ณ์ ธ HTML๋ฌธ์๋ฅผ ์ถ๋ ฅํ๋ ์ํํธ์จ์ด ์๋ฒ ํ
ํ๋ฆฟ ์์ง - JSP(๋ช
ํํ๊ฒ๋ ์๋) ..๋ฑ ํด๋ผ์ด์ธํธ ํ
ํ๋ฆฟ ์์ง - React,Vue ...๋ฑ ์์ญ๊ณผ ์๋ํ๋ ๋ฐฉ์์ด ๋ค๋ฅด๋ค. ์๋ฐ์คํฌ๋ฆฝํธ๋ ๋ธ๋ผ์ฐ์ ์์์ ์๋ - ๋ธ๋ผ์ฐ์ ์์ ์๋๋ ๋๋ ์๋ฒ ํ
ํ๋ฆฟ ์์ง์ด ์ ์ดํ ์ ์๋ค. - ์๋ฒ์์๋ Jsonํน์ xmlํ์์ ํ
์ดํฐ๋ง ์ ๋ฌํ๊ณ ํด๋ผ์ด์ธํธ์์ ์กฐ๋ฆฝํ๋ค.
๊ต์ก๊ณผ์ ๋์ ์ธ์ ๋ง๋ค์ด์ก๋์ง, ์ธ์ ์์ ๋์๋์ง์ ๋ฐ๋ฅธ ์ ์ง๋ณด์ ์ค์์ฑ์ ๋ฐฐ์ฐ์ง ๋ชปํ๋ค. ์ด์ ๋ชจ๋ธ๋งํ ๋ ๊ณ ๋ คํด์ ์ง์ผ๊ฒ ๊ตฐ... ๊ฐ์ ๋ด์ฉ์ธ๋ฐ ๋งค๋ฒ DB์ insert/update์ ํ๊ธฐ์๋ ์ฝ๋๊ฐ ์ฌ๊ธฐ์ ๊ธฐ ๋ค์ด๊ฐ๊ฒ ๋๋๊น ์์ฑ๋ ๋ ๊ฐ์ด ์์ฑ๋๋ฉด ํธ๋ฆฌํ๋ค! domain ํด๋์ BaseTimeEntityํด๋์ค๋ฅผ ๋ง๋ค์ด์ฃผ๊ณ ๋ชจ๋ Entity์ ์์ ํด๋์ค๊ฐ ๋๊ฒ ํ๋ฉด ๋๋ค. 1. @MappedSpuerclass ๋ฅผ ์ด์ฉํ๋ฉด JPA Entityํด๋์ค๋ค์ด BaseTimeEntity๋ฅผ ์์ํ ๊ฒฝ์ฐ ํ๋๋ค๋ ์ปฌ๋ผ์ผ๋ก ์ธ์ํ๋๋ก ํ๋ค. 2. @EntityListeners(AuditingEntityListener.class)๋ก ํด๋น ํด๋์ค์ Auditing๊ธฐ๋ฅ์ ํฌํจํ๋ค. 3. @CreatedDate priva..
//postRepository์์ ๋์ด์จ ๊ฒฐ๊ณผ๋ฅผ postsRepository.findAllDesc().stream() //Stream์ ํตํด map์ผ๋ก new PostsListResponseDto ์ ๋งคํ ํด์ค๋ค. //PostsListResponseDto์์๋ ํ๋ผ๋ฏธํฐ๋ก postRepository์์ ๋์ด์จ ๊ฒฐ๊ณผ Entity posts๋ฅผ ๋ฐ๊ณ ์์ผ๋ฏ๋ก //๊ฒฐ๊ณผ์ ์ผ๋ก .map(posts -> new PostsListResponseDto(posts)) .map(PostsListResponseDto::new) //collect๋ฅผ ์ฌ์ฉํด์ List๋ก ๋ณํํ๋ค. .collect(Collectors.toList()); stream์ด๋ผ๋ ๊ฒ ์๋ ๊ฒ ์กฐ์ฐจ ๋ชฐ๋ผ์ ๊ณต๋ถํ๋ฉด์ ํผ๋์ค๋ฌ์ ๋ค ๋๋ค์์ ๋ฐฐ์ด ์ ์ด ์์ผ๋. ใ
..