๋ฐฑ์๋ ๊ฐ๋ฐ/SpringMVC
57
@Configuration์ ๋ํ์ฌ
@Configuration์ ํด๋น ํด๋์ค๊ฐ ์ค์ ์ ๊ดํ ํด๋์ค์์ Spring Container์๊ฒ ์๋ฆฌ๊ณ , ๊ทธ๊ฒ์ Bean์ผ๋ก ๋ฑ๋กํ๋๋ก ํ๋ ์ด๋
ธํ
์ด์
์ด๋ค. ์ด? ๊ทธ๋ฌ๋ฉด ํด๋น ํด๋์ค๊ฐ ์ค์ ํ์ผ์์ ๊ฐ์์ ์ผ๋ก ์๋ฆฌ๋ ์ผ ์ธ์๋ @Bean๊ณผ ๋๊ฐ์ ๊ฒ์ธ๊ฐ? ๋ฌผ๋ก ์๋๋ค. ์ค์ ํ์ผ์ ๊ฒฝ์ฐ, ํด๋น ์ค์ ์ ํต์ผ์ฑ์ ์ํด์ ํ๋๋ง ์์ฑํ๊ณ , ํ๋ก์ ํธ ๋ด์์ ๊ณ์ ๊ทธ ๋ด์ฉ์ ์ฌํ์ฉํ๋ฉฐ ์จ์ผํ๋ค. ์ด์ ์์ํ์ฌ @Configuration์ด๋ ์ด๋
ธํ
์ด์
์ ํด๋์ค๋ฅผ Bean์ผ๋ก ๋ฑ๋กํ๊ณ ํด๋น Bean ๊ฐ์ฒด๋ฅผ ์ฑ๊ธํค์ด ๋๋๋ก ์ค์ ํด์ค๋ค.
2024.01.20
๋ฐฑ์๋ ๊ฐ๋ฐ/SpringMVC
Rest-Template๋ ๋ฌด์์ธ๊ฐ
์คํ๋ง์์ ์ ๊ณตํ๋ HTTP Client REST API ํธ์ถ์ ํ์ํ ํจ์๋ฅผ ์ ๊ณตํ๋ ํด๋์ค์ด๋ค. HTTP Client Rest API๋? ๋จผ์ ์น์ด ์ด๋ป๊ฒ ๋์๊ฐ๋์ง ์ดํด๋ด์ผํ๋ค. ์น์ ํด๋ผ์ด์ธํธ์ ์๋ฒ๋ก ๋๋๋ค. ํด๋ผ์ด์ธํธ ๋ถ๋ถ์ ์ฌ์ฉ์์๊ฒ ํ์ํ ์ ๋ณด๋ฅผ ์๋ฒ์๊ฒ ์์ฒญํ๊ณ , ์๋ฒ๋ ๊ทธ์ ๋ง๋ ๋ฐ์ดํฐ๋ฅผ ํด๋ผ์ด์ธํธ์๊ฒ ์ ๊ณตํ๋ค. ํด๋น ๊ณผ์ ์์ ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์๊ฒ ์ํ๋ ์ ๋ณด๋ฅผ ์์ฒญํ๋ ๋ถ๋ถ์ HTTP Client REST API๋ผ๊ณ ํ๋ค. ์ฐ๋ฆฌ๊ฐ ์ฌ์ฉํ๋ ค๋ SPRING์ ๋ฐฑ์๋ ํ๋ ์์ํฌ๋ก ์๋ฒ์ ์ญํ ์ ๋ด๋นํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ง๋ง, ๋์ ๋ฐ๋ผ์ ์ธ๋ถ API์๊ฒ ๋ฐ์ดํฐ๋ฅผ ์์ฒญํด์ผํ๋ ํด๋ผ์ด์ธํธ์ ์ญํ ์ ํด์ผํ ์๋ ์๋ค. ์๋ JAVA์์๋ URLConnect๋ HTTPClient ๊ฐ์ ํด๋์ค๋ฅผ ์ฌ์ฉํ์ฌ ..
2024.01.16
๋ฐฑ์๋ ๊ฐ๋ฐ/SpringMVC
Spring Di ํ์ฉํ๊ธฐ - ์ด๋ก (1)
Beans๊ฐ ๋ฌด์์ธ์ง ์์๋ณธ๋ค. Application Context๊ฐ ๋ฌด์์ธ์ง ์ด๋ป๊ฒ ๋์๊ฐ๋์ง ๊ทธ ์๋ฆฌ, ์ข
๋ฅ์ ๋ํด์๋ ์์๋ณธ๋ค. 1. Beans๋? (1) Beans์ ์ญ์ฌ ์ฒ์์ Java์ ๊ฐ๋ฐ์ง์ธ SUNS์์ JavaBeans๋ฅผ ๋ฐํํ๋ค. JavaBeans๋ ์ฌ์ฌ์ฉ์ด ๊ฐ๋ฅํ ์ปดํฌ๋ํธ๋ฅผ ๋งํ๋ค. Beans๋ Client ์ธก๋ฉด (Front-end), ์๋ฒ ์ธก๋ฉด (Back-end) ๊ฐ๊ฐ ๋๋์ด์ ์ฐ์๋ค. ์๋ ๊ฐ๋ฐ์ง๋ค์ Beans๊ฐ Client GUI์์ ๋ง์ด ์ฌ์ฉ๋๊ธธ ๋ฐ๋ฌ๋ค. ์๋ฅผ ๋ค์ด ๊ฒ์์ฐฝ์ ๋๊ฐ ๋ง๋ค์ด ๋์ผ๋ฉด ๋๊ตฐ๊ฐ ๊ทธ๊ฒ์ ์ฌ์ฌ์ฉํ๋๋ก ํ๋ ๊ฒ์ด๋ค. ๊ทผ๋ฐ Clinet GUI ํํธ์์์ Beans๋ ๋ด์ฉ์ด ๋๋ฌด ๋ณต์กํด์, ์ฌ๋๋ค์ด ์๋ฌด๋ ์ฐ์ง ์์ ๋งํ๋ค. ๋๋ ค ์๋ฒ ์ธก๋ฉด์์ Beans๊ฐ ๊ฐ๊ด๋ฐ..
2023.03.31
๋ฐฑ์๋ ๊ฐ๋ฐ/SpringMVC
DI ํ์ฉํ๊ธฐ - ์ค์ต
0. ์ง๊ธ๊น์ง ํ ๊ฒ๋ค ์ง๊ธ๊น์ง๋ DI๋ผ๋ ์ปดํจํฐ ๋ณธ์ฒด์ ๋ด๋ถ๋ฅผ ๋ฏ์ด ๋ดค๋ค. Main1์ Di์ ๊ฐ๋
: ์ธ๋ถ์์ ๊ฐ์ฒด๋ฅผ ์์ฑํด์ ์์ค์ฝ๋ ๋ด๋ถ๋ก ์ฃผ์
ํ๋ค๋ ๊ฒ ์ด๋ค ์๋ฏธ์ธ์ง ์์๋ณด์๋ค. Config.txt๋ผ๋ ๋ฌธ์์ ๊ฐ์ฒด์ด๋ฆ = "ํด๋น ๊ฐ์ฒด ๊ตฌํํ๋ ํด๋์ค์ ๊ฒฝ๋ก์ฃผ์" ๋ก ๊ฐ๋ค์ ์ ์ฅํด๋๋๋ค. ๊ทธ๋ฌ๋ฉด Main1 ๋ด๋ถ์ ํจ์๊ฐ ๋ฌธ์ ๋ด์ฉ์ ๋ฐ์์์, ๊ฒฝ๋ก์ฃผ์๋ฅผ ReflectionApi๋ฅผ ์ด์ฉํด ๋ฉํ๋ฐ์ดํฐ๋ก ์ง์ง ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด์ ๋ฐํํ๋ค. ์ฐ๋ฆฌ๋ new ์ ์ธ ์์ด ํด๋น ๋งค์๋๋ง์ ์ด์ฉํด ๊ฐ์ฒด ์์ฑ์ด ๊ฐ๋ฅํด์ก๋ค. Main2๋ ๊ฐ์ฒด ์ ์ฅ์๋ผ๋ ๊ฐ๋
์ ์๊ฐ ํ๊ณ ๊ทธ๊ฒ์ด ์ด๋ป๊ฒ ๋์๊ฐ๋์ง ๋ก์ง์ ์ค๋ช
ํ๋ค. ๊ฐ์ฒด ์ ์ฅ์๋ Config.txt์ ๋ด์ฉ์ Map ํํ๋ก ์ผ๋จ ๋ฐ์์จ๋ค. ๊ทธ๋ฌ๋ฉด Key๋ ๊ฐ์ฒด์ด๋ฆ, Value..
2023.03.30
๋ฐฑ์๋ ๊ฐ๋ฐ/SpringMVC
Spring Di (ํด๋์ค ์์ ์ธ์คํด์ค ๋ณ์๊ฐ ๊ฐ์ฒด์ผ ๋ ์๋์ผ๋ก ์ฐ๊ฒฐ)
์ ๋ฒ ์๊ฐ์ ๋ฐฐ์ ๋ ๋ด์ฉ์ (main2.java)ํด๋์ค์ ๊ฒฝ๋ก์ฃผ์๊ฐ ๋ค์ด๊ฐ ์๋ ์ธ๋ถ ์ ์ฅ ํ์ผ (.porperties)์์ Key= ๊ฐ์ฒด์ด๋ฆ, Value= ํด๋์ค์ ๊ฒฝ๋ก์ฃผ์๋ก ๊ฐ ๋ฝ์๋ด์ ๊ฐ์ฒด ์ ์ฅ์๋ map์ ์ ์ฅํ๋ค. ํด๋น map์์ ๋ค์ value์ ๊ฒฝ๋ก์ฃผ์๋ฅผ ํตํด ์ง์ง ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด ๋ด์ value ๊ฐ๋ค์ ๊ฐฑ์ ํ๋ค. ๊ฒฐ๊ตญ map์ (K(๊ฐ์ฒด์ด๋ฆ), V(๊ฐ์ฒด))๊ฐ ๋์ด์ ์ฌ์ฉ์๊ฐ ์ด๋ค ๊ฐ์ฒด๋ฅผ ์ ์ธํ๋ คํ๋ฉด, new๋ฅผ ์ด์ฉํด ๋์ ํ ๋น ํ์ง ์๊ณ map์์ ์ฐพ์ ๊บผ๋ด ์ผ๋ค. ๊ทธ๋ค์ main3.java์์ ๋ฐฐ์ด ๋ด์ฉ์ ์ปดํฌ๋ํธ ์ด๋
ธํ
์ด์
์ ์ด์ฉํ๋ ๊ฒ์ด์๋ค. ๋จผ์ ์ฐ๋ฆฌ๊ฐ ์ฌ์ฉํ ํด๋์ค๋ค์๋ @Component๋ฅผ ๋ถ์ธ๋ค. ๊ทธ๋ฆฌ๊ณ doComponentScan์ด๋ผ๋ ํจ์๋ฅผ ๋ง๋ ๋ค. ํด๋น ํจ์๋ ํจํค์ง ๋ด์ ..
2023.03.29
๋ฐฑ์๋ ๊ฐ๋ฐ/SpringMVC
DI ํ๋ด๋ด๊ธฐ(2)
์ ๋ฒ ์๊ฐ์ ์ต์ข
์ ์ผ๋ก ํ ๊ฒ์ DI๋ฅผ ํ๋ด๋ด์ด ๋ณ๊ฒฝ์ ์ ๋ฆฌํ ์ฝ๋๋ฅผ ๋ง๋๋ ๊ฒ์ด์๋ค. DI๋ ์์กด์ฑ ์ฃผ์
์ผ๋ก, ์ด๋ค ๊ฐ์ฒด๋ฅผ ์์ค์ฝ๋ ๋ด๋ถ์์ ์ ์ธํ๋ ๊ฒ์ด ์๋๋ผ, ์ธ๋ถ์์ ๊ฐ์ฒด๋ฅผ ์์ฑํ ํ ์์ค์ฝ๋ ๋ด๋ถ๋ก ์ฃผ์
ํ๋ ๊ฒ์ ์๋ฏธํ๋ค. ์ ๋ฒ ํฌ์คํ
์์๋ DI๋ฅผ ํ๋ด๋ด๊ธฐ ์ํ์ฌ ๊ฐ์ฒด ์์ฑ ๊ธฐ๋ฅ์ ํ๋ ๋งค์๋๋ฅผ ์ด์ฉํ๋ค. ํด๋น ๋งค์๋์ ์ธ์๋ก ๋ณด๋ธ ๊ฐ์ด properties์ Key ๊ฐ์ผ๋ก ์๋ค๋ฉด, ๋งค์๋๋ ํด๋น Key์ ๋์๋๋ Value (์ ์ฒด์ด๋ฆ = ๊ฒฝ๋ก์ฃผ์.ํด๋์ค์ด๋ฆ)๋ฅผ ์ด์ฉํ์ฌ Class class ๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ณ , ๊ทธ Class class ๊ฐ์ฒด๋ฅผ ์ด์ฉํ์ฌ ์ค์ ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด ๋ฐํ ํ๋ค. Properties๋ map์ฒ๋ผ ํ์์ ๋๊ณ ์์ผ๋, K,V์ ์ค์ง String ๊ฐ๋ง ๊ฐ๋ฅํ๋ค. ์ด๋ฒ์๋ ๊ฐ์ฒด ์ปจํ
์ด..
2023.03.21
๋ฐฑ์๋ ๊ฐ๋ฐ/SpringMVC
DI ํ๋ด๋ด๊ธฐ
DI๋ Dependency Injection์ผ๋ก์ ์์กด์ฑ ์ฃผ์
์ ๋ปํ๋ค. ์ด๋ ์ด๋ค ํด๋์ค์ ๊ฐ์ฒด๋ฅผ new ์ฐ์ฐ์๋ฅผ ํตํด ์์ค์ฝ๋ ๋ด๋ถ์์ ๋ง๋๋ ๊ฒ์ด ์๋๋ผ, ํด๋น ํด๋์ค์ ๊ฐ์ฒด๋ฅผ ์ธ๋ถ์์ ๋ง๋ค์ด์ ์์ค์ฝ๋ ๋ด๋ถ๋ก ์ฃผ์
์ํค๋ ๊ฒ์ ๋งํ๋ค. ์ด๋ ๊ฒ ํ๋ ์ด์ ๋ ๋ณ๊ฒฝ์ ์ ๋ฆฌํ ์ฝ๋๋ฅผ ๋ง๋ค์ด, ๊ฐ๋ฐ์๊ฐ ํ ์ ์๋ ์ค์๋ฅผ ์ค์ด๊ณ , test ํ์๋ ์ค์ด๊ธฐ ์ํด์ ์ด๋ค. ๊ทธ๋ผ ๋ณ๊ฒฝ์ ์ ๋ฆฌํ ์ฝ๋๋ผ๋ ๊ฒ์ด ๋ฌด์์ธ์ง ์์๋ณด๊ณ , ์ด๋ฅผ ์ด๋ป๊ฒ ํํํด์ผํ๋์ง ์์๋ณด์. 0. ๊ฐ์ class Car{} class SportsCar extends Car {} class Truck extends Car {} SportsCar car = new SportsCar (); // (๋ฐ๊พธ๋ ค๋ ๊ฒ) Truck car = new Tru..
2023.03.21
๋ฐฑ์๋ ๊ฐ๋ฐ/SpringMVC
Intellij ๋จ์ถ๊ธฐ ๋ชจ์์ง (๊ณ์ ์ถ๊ฐ)
alt + home ๋ค๋น๊ฒ์ดํฐ๋ก ๊ฐ๋ ํค shift * 2 ๋ชจ๋ ์ฐพ๋ ๋๋ณด๊ธฐ ์ด๋์ ํฌ์ปค์ค๊ฐ ์๋ ESC ๋๋ฅด๋ฉด Editor๋ก ๋์์ด. ctrl shift A ๋ฐ๋ก ์ก์
๋ญ ์๋์ง ์ฐพ๊ธฐ ctrl tab ์์์ ๋ฐ์ผ๋ก // ctrl shift tab ๋ฐ์์ ์๋ก ์ต๊ทผ์ ์ฝ๊ฑฐ๋ ํธ์งํ ํ์ผ๋ค์ ๋ชฉ๋ก ๋ณด๊ธฐ > Ctrl + E ctrl shift E > ํ์ผ ๋ณด๊ฑฐ๋ ํธ์งํ ์ด๋ ฅ์ด ์ญ ๋์ด. ctr alt left right ๋๋ฅด๋ฉด left ์ ์ ํธ์งํ ๊ณณ์ผ๋ก ๊ฐ. right ๋ค์์ ๋ค์ ์์ผ๋ก ์ด ์ด๋ ค์๋ ํญ๋ค ๊ฐ์ ์ด๋ alt ๋๋ฅด๊ณ ์ค๋ฅธ์ชฝ ์ผ์ชฝ ctrl + / ์ญ ๋๋ฅด๋ฉด ๋ฐ์ผ๋ก ์ญ ๋ด๋ ค๊ฐ. ctrl shift / ์ฌ๋ฌ์ค ์ฃผ์ ctrl f ์ํ๋ ๋ง ์ฐพ๊ธฐ ์ํฐ ๋ด๋ ค๊ฐ๊ธฐ shift ์ํฐ ์ฌ๋ผ๊ฐ๊ธฐ ctrl + R..
2023.03.19
๋ฐฑ์๋ ๊ฐ๋ฐ/SpringMVC
๋ฐ์ดํฐ ๊ฒ์ฆ - ๋งค์๋ ๋ง๋ค๊ธฐ, ๋ฑ๋ก, view์ ๋ณด์ฌ์ฃผ๋ ๋ฒ
์์ฒญ์ ํ๋ผ๋ฏธํฐ๊ฐ ์ปจํธ๋กค๋ฌ ๋งค์๋์ ์ธ์๋ก ๋ฐ์ธ๋ฉ ๋ ๋, ํ๋ผ๋ฏธํฐ๋ ํ ๋ณํ๊ณผ ๋ฐ์ดํฐ ๊ฒ์ฆ ์ ์ฐจ๋ฅผ ๊ฑฐ์น๋ค. ํ ๋ณํ์ ํ๋ผ๋ฏธํฐ๋ฅผ ๋ฐ์ธ๋ฉ๋ ๋งค์๋์ ์ธ์์ ๊ฐ์ ํ์ผ๋ก ๋ณํํ๋ ์ ์ฐจ์ด๊ณ , ๋ฐ์ดํฐ ๊ฒ์ฆ์ ํ๋ผ๋ฏธํฐ๊ฐ ์ธ์์ ๊ฐ์ผ๋ก์ ๋ง์ด ๋๋์ง ํ์ธํ๋ ์ ์ฐจ์ด๋ค. ์ด ๋์ ๋ชจ๋ ์๋ฌ ์์ด ๊ฑฐ์น๋ฉด ๋ฐ์ธ๋ฉ ๋๊ณ , ๊ณผ์ ์์ ์๋ฌ๊ฐ ๋๋ฉด ๋ฐ์ธ๋ฉ์ ์คํจํ๊ณ ์๋ฌ ๋ด์ฉ์ BindingResult์ ๊ฐ์ฒด์ ์ ์ฅ๋๋ค. ์ ๋ฒ ์๊ฐ์๋ ํ ๋ณํ ๋งค์๋๋ฅผ ๋ง๋ค์ด Binder์ ๋ฑ๋กํด์ WebDataBinder๊ฐ ์๋ ํ ์ ์์๋ ํ ๋ณํ์ ํ ์ ์๋๋ก ๋ง๋๋ ๊ฒ์ ํ๋ค. ์ด๋ฒ์ ๊ฐ์ ๊ณผ์ ์ ๋ฐ์ดํฐ ๊ฒ์ฆ ์ชฝ์์ ํ ๊ฒ์ด๋ค. ๋ฐ์ดํฐ ๊ฒ์ฆ์ ๊ฒฝ์ฐ์๋, WDB์ ๊ธฐ๋ณธ ๋ด์ฅ๋ ๊ธฐ๋ฅ ๋ง๊ณ ์ฌ์ฉ์๊ฐ ๋ง๋ค์ด ํ๊ณ ์ถ์ ๊ฒ์ฆ ์ ์ฐจ๊ฐ ๋ฐ๋ก ..
2023.03.16
๋ฐฑ์๋ ๊ฐ๋ฐ/SpringMVC
๋ฐ์ดํฐ ๋ณํ๊ณผ ๊ฒ์ฆ(ํ์
๋ณํ ์ถ๊ฐ ํ๋ ๋ฒ, BindingResult ์ด์ฉ)
1.WebDataBinder์ ์๋ฆฌ (๋ณต์ต) (0)Binding์ด๋? ์์ฒญ์ ํ๋ผ๋ฏธํฐ๋ฅผ ์ปจํธ๋กค๋ฌ ๋งค์๋์ ์ธ์์ ์ฐ๊ฒฐ ์ํค๋ ๊ฒ์ ๋งํ๋ค. WebDataBinder๋ ์์ฒญ์ ํ๋ผ๋ฏธํฐ๋ฅผ Controller Method์ ์ธ์์ ๋ง๊ฒ ํ๋ณํ์ ์์ผ์ฃผ๊ณ , ๋ ์ธ์๋ก ๋ค์ด๊ฐ ์ ์๋ ๊ฐ์ธ์ง ํ์ธํ๋ ์ฅ์น์ด๋ค. ํด๋น ๊ณผ์ ์ ๊ฑฐ์ณ์ ํ๋ผ๋ฏธํฐ๊ฐ ์ธ์์ ์ฐ๊ฒฐ๋๋ค. (1) ํ ๋ณํ ์์ฒญ์ ํ๋ผ๋ฏธํฐ๋ ๋ฌด์กฐ๊ฑด String์ด๊ธฐ ๋๋ฌธ์ ํ ๋ณํ์ด ํ์ํ๋ค. ์ฌ๊ธฐ์๋ MyDate๋ผ๋ ๊ฐ์ฒด๊ฐ ์ปจํธ๋กค๋ฌ์ ์ธ์๋ก ์ฐ์๊ณ , ๊ฐ์ฒด์ ์ธ์คํด์ค ๋ณ์๋ก binding ๋์ด์ผ ํ๋ค. (binding ๋ ๋์์ Spring์ด ์์์ ์ก์์ค๋ค.) ๋ฐ๋ผ์ "2021"์ int 2021๋ก ๋ฐ๊ฟ์ฃผ๋ ์ญํ ์ ํ๋ค. ๋ง์ฝ ์ด ๊ณผ์ ์์ ์๋ฌ๊ฐ ๋ฐ์ํ๋ฉด, (y..
2023.03.15
๋ฐฑ์๋ ๊ฐ๋ฐ/SpringMVC
DispatcherServlet Source ๊น๋ณด๊ธฐ (์ด๋ป๊ฒ ๋์๊ฐ๋์ง)
1. DispatcherServlet์ด๋ ๋ญ์๋? (๋ณต์ต) ๋ณธ๋ ํ๋์ ์๋ธ๋ฆฟ์ ์
๋ ฅ ์ฒ๋ฆฌ ์ถ๋ ฅ ๊ณผ์ ์ด ๋ค ๋ด๊ฒจ ์์๋ค. ์ฌ๊ธฐ์ ๋ชจ๋ ์๋ธ๋ฆฟ์ ๊ณตํต์ ์ด๊ณ ๋์๊ฐ๋ ์๋ฆฌ์ ์ฐจ์ด๊ฐ ์๋ ์
๋ ฅ ๋ถ๋ถ์ ์์ผ๋ก ๋นผ์, ํ๋์ ์๋ธ๋ฆฟ์ผ๋ก ๋ง๋ค์๋ค. (์ฒ๋ฆฌ๋ ์ถ๋ ฅ์ ์๋ธ๋ฆฟ๋ง๋ค ๊ธฐ๋ฅ์ด ๋ค๋ฅผ ์ ์์ง๋ง, ์ฌ์ฉ์์ ์์ฒญ์ ๋ฐ๋ ์
๋ ฅ๋ถ๋ถ์ ๊ฑฐ์ ๋ชจ๋ ์๋ธ๋ฆฟ์ด ๊ณตํต์ ์ผ๋ก ๊ฐ๋ค.) ์ด๊ฒ์ด ๋์คํจ์ณ ์๋ธ๋ฆฟ์ด๋ค. ์คํ๋ง์ ์๋ธ๋ฆฟ์ ์ ์ฒ๋ฆฌ ์ ๋ดํ๋ DispatcherServlet๊ณผ ์ฒ๋ฆฌ๋ด๋น Controller, ์ถ๋ ฅ๋ด๋น View๋ก ๋๋์ด์ ๊ด์ฌ์ฌ๋ฅผ ๋ถ๋ฆฌํ๋ค. (๊ด์ฌ์ฌ๋ ์ฌ์ฉ์๊ฐ ๊ด์ฌ์ ๊ฐ์ง๊ณ ํด๊ฒฐํด์ผํ ์์
์ ๋งํ๋ค. MVC ํจํด์ ํด๊ฒฐํด์ผํ ๋ถ์ผ๋ฅผ ๊ฐ๊ฐ DisPatcherServlet, Controller, view๋ก ๋๋์ด์ ๊ด..
2023.03.14
๋ฐฑ์๋ ๊ฐ๋ฐ/SpringMVC
Spring์์ ์์ธ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ(2)
์ ๋ฒ ์๊ฐ๊น์ง ์ ๋ฆฌํ ๋ด์ฉ์ผ๋ก ์๋ฒ ์ฒ๋ฆฌํ๋ค๊ฐ ์์ธ๊ฐ ๋ฐ์ํ์ ์ ์ด๋ฅผ ๋์ฒํ๋ ๋ฐฉ๋ฒ์ด 3๊ฐ์ง๊ฐ ์์๋ค. (1) ์์ธ๊ฐ ๋ฐ์ํ ์ ์๋ ๊ตฌ๋ฌธ์ try - catch๋ก ๋ฌถ๋๋ค. ์ด๋ ์์ธ๊ฐ ๋ฐ์ํ ์ ์๋ ๊ตฌ๋ฌธ๋ง๋ค try-catch ๊ตฌ๋ฌธ์ผ๋ก ๋ฌถ์ด์ผ ํด์ ์์ฃผ ๋นํจ์จ์ ์ด์๋ค. (2) ์ปจํธ๋กค๋ฌ ๋ด๋ถ์ ์์ธ์ฒ๋ฆฌ๋ง ๋ด๋นํ๋ ๋งค์๋ ๋ง๋ค๊ธฐ. ์์ธ์ฒ๋ฆฌ ๋งค์๋์ ์ด๋
ธํ
์ด์
์ @ExceptionHandler ์ด๋ค. ์๋์๋ฆฌ๋ ๋ค์๊ณผ ๊ฐ๋ค. a. ํด๋น ์ปจํธ๋กค๋ฌ ๋ด๋ถ์ ์ด๋ค ๋งค์๋์์ ์์ธ๊ฐ ๋ฐ์ํ๊ณ , ๊ทธ ๋งค์๋๋ ์์ธ๋ฅผ ๋ฐ์ผ๋ก ๋์ง๋ค. (throws) b. @ExceptionHandler ์ด๋
ธํ
์ด์
์ด ๋ถ์ ๋งค์๋ ์ค ํด๋น ์์ธ๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ ๋งค์๋๊ฐ ์๋ค๋ฉด catch ๊ตฌ๋ฌธ์ฒ๋ผ ํด๋น ์์ธ๋ฅผ ๊ฐ์ฒด๋ก ๋ฐ์์ ์ฒ๋ฆฌํ๋ค. **..
2023.03.12
๋ฐฑ์๋ ๊ฐ๋ฐ/SpringMVC
Spring์์ ์์ธ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ(1)
์ปจํธ๋กค๋ฌ์ ๋งค์๋์์ ์์ธ๊ฐ ๋ฐ์ ํ์ ์ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ๋์ง์ ๊ดํ ๋ด์ฉ์ด๋ค. ์์ธ์ฒ๋ฆฌ ์ ํ ๊ฒฝ์ฐ, ์๋ฒ๊ฐ ์ด๋ป๊ฒ ์๋ตํ๋์ง์ ๋ํด์ ์์๋ณด๊ณ ์์ธ ์ฒ๋ฆฌ ๋ฐฉ๋ฒ์ ๋ํด์ ์์๋ณธ๋ค. ์์ธ ์ฒ๋ฆฌ ๋ฐฉ๋ฒ์๋ try-catch ๋ฌธ์ผ๋ก ์ฒ๋ฆฌ, @ExceptionHandler ์ฌ์ฉ, @ControllerAdvice ์ฌ์ฉ์ด ์๋ค. 1. ์์ธ์ฒ๋ฆฌ ์ ํ ๊ฒฝ์ฐ, ์๋ฒ๊ฐ ์ด๋ป๊ฒ ์๋ตํ๋? @Controller public class ExceptionController2 { // ๊ฐ ๋งค์๋์์ ์์ธ ๋ฐ์ ์ํด. @RequestMapping("/ex3") public void main() throws Exception { throw new Exception("์์ธ๊ฐ ๋ฐ์ํ์ต๋๋ค."); } } ์ผ๋ถ๋ฌ ์์ธ๋ฅผ ๋ง๋ค์ด ๋์ ธ๋ณด์๋ค. ..
2023.03.11
๋ฐฑ์๋ ๊ฐ๋ฐ/SpringMVC
์ธ์
(Session) ์ค์ต(2)
์ ๋ฒ ์๊ฐ์ ํ๋ ๋ด์ฉ์ ๋ณต๊ธฐ ํด๋ณด๊ฒ ๋ค. ๋จผ์ ํํ๋ฉด์์ ๊ฒ์ํ ํ๋ฉด์ผ๋ก ๋ค์ด๊ฐ๋ ค ํ๋๋ฐ, ์ด๋ ํด๋ผ์ด์ธํธ๋ก ๋ก๊ทธ์ธ ์ํ์ธ์ง ์๋์ง ์ฒดํฌํ๋ค. ๋ก๊ทธ์ธ ์ํ๋ผ๋ฉด ๋ฐ๋ก ๊ฒ์ํ ํ๋ฉด์ผ๋ก ๋์ด๊ฐ๋ค. ๋ก๊ทธ์ธ ์ ํ ์ํ๋ฉด, ๋ก๊ทธ์ธ ์ฐฝ์ ๋์ด๋ค. ํด๋ผ์ด์ธํธ๊ฐ ๋ก๊ทธ์ธ์ ํ๋ฉด ๋ค์ ํ ํ๋ฉด์ผ๋ก ์ด๋ํ๋ค. ๋ก์ง์ ๋ฐ๊ณผ ๊ฐ๋ค. ์ฐ๋ฆฌ๊ฐ ์ด๋ฒ์ ํ๋ ค๋ ๊ฒ์ ๋ก๊ทธ์ธ ์ฑ๊ณตํ๋ฉด ๋ค์ ์๊ธฐ๊ฐ ๊ฐ๋ ค๊ณ ํ๋ ํ์ด์ง๋ก ๋ค์ ํด๋ผ์ด์ธํธ๋ฅผ ๋ณด๋ด๋ ๊ฒ์ด๋ค. ๋ ๋ฌด์ ์ฌ์์ ์ท์ ์ด๋ ค๊ณ ํ๋๋ฐ, ๋ก๊ทธ์ธ ์ํ๊ฐ ์๋ ๊ฒ์ ๊น๋จน์ ์ ์ด ์๋ค. ๋ก๊ทธ์ธ์ ํ๋ ๋ค์ ํ ํ๋ฉด์ผ๋ก ๊ฐ์ ๋ด๊ฐ ์ด๋ ค ํ๋ ์ท์ ๋ค์ ์ฐพ์์ผ ํด ์ง์ฆ ๋ฌ๋ ์ ์ด ์๋ค. ์ด๋ฒ ์นํ์ด์ง ์์๋ ๊ทธ๋ฐ ์ ๋ก์ฌํญ์ด ์๋๋ก ๊ฒ์ํ์ ๋ค์ด๊ฐ๋ ค ํ๋ ์ฌ์ฉ์๊ฐ ๋ก๊ทธ์ธ ํ ์ ๊ทธ๋๋ก ๊ฒ์ํ ํ์ด์ง..
2023.03.10
๋ฐฑ์๋ ๊ฐ๋ฐ/SpringMVC
Session ์ด์ฉ ์ค์ต(1)
๋๋ค์์ ์นํ์ด์ง๊ฐ ํ์์ธ์ง ์๋์ง์ ๋ฐ๋ผ ํ ์ ์๋ ํ๋๋ค์ด ๋๋๋ค. ์ฐ๋ฆฌ๊ฐ ๋ง๋ ํํ์ด์ง์์๋ ํด๋ผ์ด์ธํธ๊ฐ ๋ก๊ทธ์ธ ํด์ผ์ง๋ง ๊ฒ์ํ ํ์ด์ง๋ฅผ ์ด์ฉํ ์ ์๋ค๊ณ ํ์. ์ธ์
๊ฐ์ฒด ์์ id๊ฐ ์ ์ฅ๋์ด ์๋์ง ์๋์ง๋ฅผ ํตํด ํด๋ผ์ด์ธํธ๊ฐ ๋ก๊ทธ์ธ ํ๋์ง ์ ํ๋์ง๋ฅผ ์ฒดํฌํ ์ ์๋ค. ๋ฐ์ ์ฌ์ง์ ๊ฒ์ํ์ ๋ค์ด๊ฐ๊ธฐ ์ํ ๋ก์ง์ ๋ํ๋ธ ๊ฒ์ด๋ค. 1. BoardController์ boardList ๋ง๋ค๊ธฐ ์ฐ๋ฆฌ๋ ์ง๊ธ๊น์ง ๋ก๊ทธ์ธ ํ๋ฉด(loginForm.jsp)๊ณผ ๋ก๊ทธ์ธ ํ ๋ค์ด์ฌ ์ ์๋ ํ ํ๋ฉด(index.jsp) 2๊ฐ์ง๋ฅผ ๋ง๋ค์๋ค. index.jsp๋ฅผ ์ดํด๋ณด๋ฉด, fastcampus Home Board login Sign in This is HOME This is HOME This is HOME ์์ ๊ฐ์ด li..
2023.03.09
๋ฐฑ์๋ ๊ฐ๋ฐ/SpringMVC
Session- ์ด๋ก
1. ์ธ์
์ด๋? Session์ ์๋ก ๊ด๋ จ๋ HTTP ํธ๋ ์ ์
์ ์๋ฒ๊ฐ ๊ตฌ๋ณํ ์ ์๋๋ก ํ๋ฐ ๋ฌถ์ด ๋๋ ๊ฒ์ ๋งํ๋ค. ํ๋์ ๋ธ๋ผ์ฐ์ ์ ๋์ํ๋ ์ธ์
๊ฐ์ฒด(์ ์ฅ์)๋ ํ๋์ด๋ค. (1๋1 ๋์) (๋ค๋ฅธ PC์์ ๋์จ ๋ธ๋ผ์ฐ์ , ํ PC์์๋ ์๋ก ๋ค๋ฅธ ๋ธ๋ผ์ฐ์ ๋ผ๋ฉด ์ธ์
ID๊ฐ ์๋ก ๋ค๋ฅด๋ค.) (HTTPํธ๋ ์ ์
- ์์ฒญ๊ณผ ์๋ต ํ ์ธํธ๋ฅผ ๋งํจ. ์์ฒญ๋ค์ ์๋ก ๋
๋ฆฝ์ ์ด๋ผ, ์ธ์
์ด๋ ์ฟ ํค๊ฐ ์์ผ๋ฉด ์๋ฒ๋ ํด๋น ์์ฒญ์ด ๊ฐ์ ํด๋ผ์ด์ธํธ์๊ฒ์ ์จ ๊ฒ์ธ์ง ์๋์ง ๊ตฌ๋ณํ์ง ๋ชปํ๋ค.) ์ธ์
์ ์๋ฒ์ ๊ฐ์ฒด๋ก์ ์กด์ฌํ๊ณ , ์๋ก ์ฐ๊ด๋ ์์ฒญ๋ค์ ํ๋๋ก ๋ฌถ๊ธฐ ์ํด ์ฟ ํค๋ฅผ ์ด์ฉํ๋ค. 2. ์ธ์
์ด ๋์๊ฐ๋ ๊ณผ์ . (1) ์ธ์
์ ์์ฑ ๋ธ๋ผ์ฐ์ ์์ ์ฒซ ๋ฒ์งธ ์์ฒญ์ด ์ค๋ ์๊ฐ, ์๋ฒ์์๋ ํด๋น ์์ฒญ์ ๋ํ ์ธ์
์ ๋ง๋ ๋ค. ๊ทธ๋ฆฌ๊ณ ์์ฒญ์..
2023.03.09
๋ฐฑ์๋ ๊ฐ๋ฐ/SpringMVC
์ฟ ํค๋?
1. ์ฟ ํค๊ฐ ํ๋ ์ญํ ์ด ๋ฌด์์ผ๊น? ํน์ ์น์ฌ์ดํธ์๋ ์์ด๋ ๊ธฐ์ตํ๊ธฐ๋ ์ฅ์น๊ฐ ์๋ค. ์ด๋ ํ๋ฒ ๋ก๊ทธ์ธ ํ์ผ๋ฉด ๋ค์์ ๋ก๊ทธ์ธ ํ์ด์ง๋ฅผ ์ฌ๋ฐฉ๋ฌธ ํ์ ๋, ํด๋น ์์ด๋๊ฐ ๋ฏธ๋ฆฌ ์ฐํ ์๋๋ก ํ๋ ๊ฒ์ด๋ค. ๊ฐ๋ฐ์ ๋๊ตฌ๋ฅผ ํตํด ์ฟ ํค๊ฐ ๋ญ ์๋ ํ์ธํด๋ณด๋ฉด, id๋ ์ด๋ฆ์ผ๋ก ์ฟ ํค๊ฐ ๋ค์ด์๋ ๊ฒ์ ์ ์ ์๋ค. ์์์ ๋ฐฐ์ ๋ค์ํผ, HTTP๋ ์ํ ์ ๋ณด๋ฅผ ์ ์ฅํ์ง ์๋๋ค. ๋ฐ๋ผ์ ํด๋ผ์ด์ธํธ๋ ์ฐ์์ ์ผ๋ก ์จ ๋ ์์ฒญ์ด ๊ฐ์ ํด๋ผ์ด์ธํธ์๊ฒ์ ์จ ๊ฒ์ธ์ง, ๋ค๋ฅธ ํด๋ผ์ด์ธํธ์๊ฒ์ ์จ ๊ฒ์ธ์ง ์ ์ ์๋ค. ํ์ง๋ง ๋๋๋ก ์๋ฒ๊ฐ ์ ํด๋ผ์ด์ธํธ์ ํ๋์ ๊ธฐ์ตํด์ผ๋ง ์ฒ๋ฆฌํ ์ ์๋ ์ผ์ด ์๋ค. (ex - ๋ก๊ทธ์ธ ํ์๋ง ํ ์ ์๋ ํ๋ ๋ฑ) ์ฟ ํค๋ ํด๋ผ์ด์ธํธ๋ฅผ ์๋ณํ๋ ๊ธฐ์ ์ด๋ค. ์๋ฒ๊ฐ ์ฟ ํค๋ฅผ ์ด์ฉํ๋ฉด ํด๋ผ์ด์ธํธ๋ฅผ ๊ตฌ๋ณํ ์ ์๋ค. 2..
2023.03.05
๋ฐฑ์๋ ๊ฐ๋ฐ/SpringMVC
Redirect์ Forward์ ๋ํ์ฌ
1. ์๋ฆฌ (1) redirect a. ํด๋ผ์ด์ธํธ๊ฐ ํน์ ์ฃผ์๋ก ์์ฒญ์ ๋ณด๋. b. ๊ทผ๋ฐ ์๋ฒ๊ฐ ๋ฐ์๋ณด๋ ํด๋น ์ผ์ ํด๋น ์ฃผ์์์ ์ฒ๋ฆฌํ ์ ์๋ ์ผ์. c. ๊ทธ๋์ ์๋ฒ๋ ์๋ต ๋ฉ์ธ์ง Header์๋ค๊ฐ ์ํ์ฝ๋ 300(redirect ์์ฒญ)๊ณผ ํจ๊ป ์ด๋๋ก ๊ฐ์ผ ์ด ์ผ์ ์ฒ๋ฆฌํ ์ ์๋์ง ์ฃผ์(location)๋ฅผ ๊ฐ์ด ์จ์ ๋ค์ ๋ธ๋ผ์ฐ์ ์๊ฒ ๋ณด๋ธ๋ค. d. ๋ธ๋ผ์ฐ์ ๊ฐ ์๋์ผ๋ก ํด๋น ์ฃผ์๋ก ์ฌ์์ฒญ์ ํ๋ค. (๋ธ๋ผ์ฐ์ ๊ฐ ์ฌ์์ฒญ ์ ์๋จ์ URL์ด ์ฌ์์ฒญ๋ ์ฃผ์๋ก ๋ฐ๋์ด์ ํด๋ผ์ด์ธํธ๋ ์ฌ์์ฒญ ํ๋ ์ค ์ ์ ์์.) e. ์ฌ๋ฐ๋ฅธ ์ฃผ์๊ฐ ์๋ตํ์ฌ ํด๋ผ์ด์ธํธ์ ๋ธ๋ผ์ฐ์ ์ ๋์์ง๋ค. (์ด ๋ ์ด ์๋์์ฒญ์ ์ค๋ก์ง GET ์์ฒญ๋ฐ์ ์๋๋ค. ๋ฐ๋ผ์ ํด๋ผ์ด์ธํธ๊ฐ ๋ก๊ทธ์ธ ์ ๋ณด ์ณ์ ๋ณด๋๋คํ๋๋ผ๋ redirect ๋๋ฉด ์ฌ๋ฐ๋ฅธ..
2023.03.04
๋ฐฑ์๋ ๊ฐ๋ฐ/SpringMVC
@RequestMapping More , ์ธ์ฝ๋ฉ์ ์๋ฆฌ
1. @RequestingMapping more (1) RequestMethod๊ฐ ๋ค๋ฅด๋ฉด ๊ฐ์ URL ์ฃผ์๋ฅผ ๊ฐ์ ธ๋ ๋๋ค. @RequestMapping๋ง ํ๋ ์์ ์๋ ๋งค์๋ ๊ฐ์ ๋งคํ URL ์ฃผ์๊ฐ ๊ฐ์ผ๋ฉด ์๋ฌ๊ฐ ๋ฌ๋ค. ํ์ง๋ง @PostMapping๊ณผ @GetMapping์ ์๋ก ํ๋ ์์
์ด ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ URL ์ฃผ์๊ฐ ๊ฐ์๋ ๋๋ค. @GET์ ์๋ฒ์์ ์ ๋ณด๋ฅผ ์ป์ด์ค๋ ๊ฑฐ๊ณ , @Post๋ ์ ๋ณด๋ฅผ ์๋ฒ์ ๋ฐ์ดํฐ์ ๊ธฐ๋กํ๋ ๊ฒ์ด๋ค. (2)ํ๋์ ์ปจํธ๋กค ๋ด ๋งค์๋ ๊ฐ์ ๋์ผํ ์ฃผ์๋ @RequestMapping์ ์จ ๋ฌถ์ด์ค ์ ์๋ค. @Contorller ๋ฐ, ํด๋์ค ์ด๋ฆ ์์ @RequestMapping์ ์จ์ ์ค๋ณต๋๋ ์ฃผ์๋ ๋ฌถ์ด์ค ์ ์๋ค. ์ด๋ฌ๋ฉด ๋งค์๋ ๋ณ๋ก ๋งคํ๋ ์ฃผ์๊ฐ ์ ๋ง ์ ๊ณ , ๋ฌด์จ ์ผ ํ๋ ค๋..
2023.03.04
๋ฐฑ์๋ ๊ฐ๋ฐ/SpringMVC
@ ์ด๋
ธํ
์ด์
์ ๋ฌธํ, view Controller, Redirection
1. @ RequestMapping์ ์ ๋ฌธํ @RequestMapping์ผ๋ก URL๊ณผ ์ปจํธ๋กค๋ฌ๋ฅผ Mapping ํด๋ฒ๋ฆฌ๋ฉด ์ฌ์ฉ์๋ GetMapping PostMapping ๋ ๋ฐฉ๋ฒ ๋ค ์ฌ์ฉํ์ฌ ์ปจํธ๋กค๋ฌ๋ฅผ ์ด์ฉํ ์ ์๋ค. ์๋ฅผ ๋ค์ด ํ์๊ฐ์
์ GetMapping์ผ๋ก ์คํธ๋ง ์ฟผ๋ฆฌ์ ํ์ ๊ฐ์
๋ด์ฉ์ ๋ค ์ ์ ์ฑ ์์ฑํ ์๋ ์๊ณ , PostMapping์ผ๋ก ๊ฐ์ธ ์ ๋ณด๋ ์ ๋ถ body์ ๋ฃ์ด ๊ธฐ์
ํ ์ ๋ ์๋ค. ๋น์ฐํ์ง๋ง, GetMapping์ผ๋ก ๊ฐ์ธ์ ๋ณด๋ฅผ ์์ฑํ๋ฉด ๋ธ๋ผ์ฐ์ ์ ๋
ธ์ถ๋๊ธฐ ๋๋ฌธ์ ๋ณด์์ ์ผ๋ก ์ข์ง ์๋ค. ์ด์ ๊ฐ์ด ํน์ ์ํฉ์ ๋ํด Getmapping ํน์ PostMapping์ผ๋ก๋ง ์ปจํธ๋กค๋ฌ์ ๋ธ๋ผ์ฐ์ ๊ฐ Mapping ๋๊ฒ ํ๋ ๊ฒ์ด ๊ฐ๋ฅํ๋ค. ์ด์ ๋ํด์ ๋
ผํด๋ณธ๋ค. (1) @ RequestMa..
2023.03.04
๋ฐฑ์๋ ๊ฐ๋ฐ/SpringMVC