user-img
๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ/SpringMVC 57
@Configuration์— ๋Œ€ํ•˜์—ฌ
@Configuration์€ ํ•ด๋‹น ํด๋ž˜์Šค๊ฐ€ ์„ค์ •์— ๊ด€ํ•œ ํด๋ž˜์Šค์ž„์„ Spring Container์—๊ฒŒ ์•Œ๋ฆฌ๊ณ , ๊ทธ๊ฒƒ์„ Bean์œผ๋กœ ๋“ฑ๋กํ•˜๋„๋ก ํ•˜๋Š” ์–ด๋…ธํ…Œ์ด์…˜์ด๋‹ค. ์–ด? ๊ทธ๋Ÿฌ๋ฉด ํ•ด๋‹น ํด๋ž˜์Šค๊ฐ€ ์„ค์ • ํŒŒ์ผ์ž„์„ ๊ฐ€์‹œ์ ์œผ๋กœ ์•Œ๋ฆฌ๋Š” ์ผ ์™ธ์—๋Š” @Bean๊ณผ ๋˜‘๊ฐ™์€ ๊ฒƒ์ธ๊ฐ€? ๋ฌผ๋ก  ์•„๋‹ˆ๋‹ค. ์„ค์ • ํŒŒ์ผ์˜ ๊ฒฝ์šฐ, ํ•ด๋‹น ์„ค์ •์˜ ํ†ต์ผ์„ฑ์„ ์œ„ํ•ด์„œ ํ•˜๋‚˜๋งŒ ์ƒ์„ฑํ•˜๊ณ , ํ”„๋กœ์ ํŠธ ๋‚ด์—์„œ ๊ณ„์† ๊ทธ ๋‚ด์šฉ์„ ์žฌํ™œ์šฉํ•˜๋ฉฐ ์จ์•ผํ•œ๋‹ค. ์ด์— ์ƒ์‘ํ•˜์—ฌ @Configuration์ด๋ž€ ์–ด๋…ธํ…Œ์ด์…˜์€ ํด๋ž˜์Šค๋ฅผ Bean์œผ๋กœ ๋“ฑ๋กํ•˜๊ณ  ํ•ด๋‹น Bean ๊ฐ์ฒด๋ฅผ ์‹ฑ๊ธ€ํ†ค์ด ๋˜๋„๋ก ์„ค์ •ํ•ด์ค€๋‹ค.
2024.01.20
๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ/SpringMVC
thumbnail
Rest-Template๋ž€ ๋ฌด์—‡์ธ๊ฐ€
์Šคํ”„๋ง์—์„œ ์ œ๊ณตํ•˜๋Š” HTTP Client REST API ํ˜ธ์ถœ์— ํ•„์š”ํ•œ ํ•จ์ˆ˜๋ฅผ ์ œ๊ณตํ•˜๋Š” ํด๋ž˜์Šค์ด๋‹ค. HTTP Client Rest API๋ž€? ๋จผ์ € ์›น์ด ์–ด๋–ป๊ฒŒ ๋Œ์•„๊ฐ€๋Š”์ง€ ์‚ดํŽด๋ด์•ผํ•œ๋‹ค. ์›น์€ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๋กœ ๋‚˜๋‰œ๋‹ค. ํด๋ผ์ด์–ธํŠธ ๋ถ€๋ถ„์€ ์‚ฌ์šฉ์ž์—๊ฒŒ ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ์„œ๋ฒ„์—๊ฒŒ ์š”์ฒญํ•˜๊ณ , ์„œ๋ฒ„๋Š” ๊ทธ์— ๋งž๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ œ๊ณตํ•œ๋‹ค. ํ•ด๋‹น ๊ณผ์ •์—์„œ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์—๊ฒŒ ์›ํ•˜๋Š” ์ •๋ณด๋ฅผ ์š”์ฒญํ•˜๋Š” ๋ถ€๋ถ„์„ HTTP Client REST API๋ผ๊ณ  ํ•œ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ์‚ฌ์šฉํ•˜๋ ค๋Š” SPRING์€ ๋ฐฑ์—”๋“œ ํ”„๋ ˆ์ž„์›Œํฌ๋กœ ์„œ๋ฒ„์˜ ์—ญํ• ์„ ๋‹ด๋‹นํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์ง€๋งŒ, ๋•Œ์— ๋”ฐ๋ผ์„œ ์™ธ๋ถ€ API์—๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•ด์•ผํ•˜๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ์—ญํ• ์„ ํ•ด์•ผํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ์›๋ž˜ JAVA์—์„œ๋Š” URLConnect๋‚˜ HTTPClient ๊ฐ™์€ ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ..
2024.01.16
๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ/SpringMVC
thumbnail
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
thumbnail
DI ํ™œ์šฉํ•˜๊ธฐ - ์‹ค์Šต
0. ์ง€๊ธˆ๊นŒ์ง€ ํ•œ ๊ฒƒ๋“ค ์ง€๊ธˆ๊นŒ์ง€๋Š” DI๋ผ๋Š” ์ปดํ“จํ„ฐ ๋ณธ์ฒด์˜ ๋‚ด๋ถ€๋ฅผ ๋œฏ์–ด ๋ดค๋‹ค. Main1์€ Di์˜ ๊ฐœ๋…: ์™ธ๋ถ€์—์„œ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ด์„œ ์†Œ์Šค์ฝ”๋“œ ๋‚ด๋ถ€๋กœ ์ฃผ์ž…ํ•œ๋‹ค๋Š” ๊ฒŒ ์–ด๋–ค ์˜๋ฏธ์ธ์ง€ ์•Œ์•„๋ณด์•˜๋‹ค. Config.txt๋ผ๋Š” ๋ฌธ์„œ์— ๊ฐ์ฒด์ด๋ฆ„ = "ํ•ด๋‹น ๊ฐ์ฒด ๊ตฌํ˜„ํ•˜๋Š” ํด๋ž˜์Šค์˜ ๊ฒฝ๋กœ์ฃผ์†Œ" ๋กœ ๊ฐ’๋“ค์„ ์ €์žฅํ•ด๋†“๋Š”๋‹ค. ๊ทธ๋Ÿฌ๋ฉด Main1 ๋‚ด๋ถ€์˜ ํ•จ์ˆ˜๊ฐ€ ๋ฌธ์„œ ๋‚ด์šฉ์„ ๋ฐ›์•„์™€์„œ, ๊ฒฝ๋กœ์ฃผ์†Œ๋ฅผ ReflectionApi๋ฅผ ์ด์šฉํ•ด ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋กœ ์ง„์งœ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด์„œ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์šฐ๋ฆฌ๋Š” new ์„ ์–ธ ์—†์ด ํ•ด๋‹น ๋งค์†Œ๋“œ๋งŒ์„ ์ด์šฉํ•ด ๊ฐ์ฒด ์ƒ์„ฑ์ด ๊ฐ€๋Šฅํ•ด์กŒ๋‹ค. Main2๋Š” ๊ฐ์ฒด ์ €์žฅ์†Œ๋ผ๋Š” ๊ฐœ๋…์„ ์†Œ๊ฐœ ํ–ˆ๊ณ  ๊ทธ๊ฒƒ์ด ์–ด๋–ป๊ฒŒ ๋Œ์•„๊ฐ€๋Š”์ง€ ๋กœ์ง์„ ์„ค๋ช…ํ–ˆ๋‹ค. ๊ฐ์ฒด ์ €์žฅ์†Œ๋Š” Config.txt์˜ ๋‚ด์šฉ์„ Map ํ˜•ํƒœ๋กœ ์ผ๋‹จ ๋ฐ›์•„์˜จ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด Key๋Š” ๊ฐ์ฒด์ด๋ฆ„, Value..
2023.03.30
๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ/SpringMVC
thumbnail
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
thumbnail
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
thumbnail
๋ฐ์ดํ„ฐ ๊ฒ€์ฆ - ๋งค์†Œ๋“œ ๋งŒ๋“ค๊ธฐ, ๋“ฑ๋ก, view์— ๋ณด์—ฌ์ฃผ๋Š” ๋ฒ•
์š”์ฒญ์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ์ปจํŠธ๋กค๋Ÿฌ ๋งค์†Œ๋“œ์˜ ์ธ์ˆ˜๋กœ ๋ฐ”์ธ๋”ฉ ๋  ๋•Œ, ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ํ˜• ๋ณ€ํ™˜๊ณผ ๋ฐ์ดํ„ฐ ๊ฒ€์ฆ ์ ˆ์ฐจ๋ฅผ ๊ฑฐ์นœ๋‹ค. ํ˜• ๋ณ€ํ™˜์€ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋ฐ”์ธ๋”ฉ๋  ๋งค์†Œ๋“œ์˜ ์ธ์ˆ˜์™€ ๊ฐ™์€ ํ˜•์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ์ ˆ์ฐจ์ด๊ณ , ๋ฐ์ดํ„ฐ ๊ฒ€์ฆ์€ ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ์ธ์ˆ˜์˜ ๊ฐ’์œผ๋กœ์„œ ๋ง์ด ๋˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ์ ˆ์ฐจ์ด๋‹ค. ์ด ๋‘˜์„ ๋ชจ๋‘ ์—๋Ÿฌ ์—†์ด ๊ฑฐ์น˜๋ฉด ๋ฐ”์ธ๋”ฉ ๋˜๊ณ , ๊ณผ์ •์—์„œ ์—๋Ÿฌ๊ฐ€ ๋‚˜๋ฉด ๋ฐ”์ธ๋”ฉ์€ ์‹คํŒจํ•˜๊ณ  ์—๋Ÿฌ ๋‚ด์šฉ์€ BindingResult์˜ ๊ฐ์ฒด์— ์ €์žฅ๋œ๋‹ค. ์ €๋ฒˆ ์‹œ๊ฐ„์—๋Š” ํ˜• ๋ณ€ํ™˜ ๋งค์†Œ๋“œ๋ฅผ ๋งŒ๋“ค์–ด Binder์— ๋“ฑ๋กํ•ด์„œ WebDataBinder๊ฐ€ ์›๋ž˜ ํ•  ์ˆ˜ ์—†์—ˆ๋˜ ํ˜• ๋ณ€ํ™˜์„ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“œ๋Š” ๊ฒƒ์„ ํ–ˆ๋‹ค. ์ด๋ฒˆ์—” ๊ฐ™์€ ๊ณผ์ •์„ ๋ฐ์ดํ„ฐ ๊ฒ€์ฆ ์ชฝ์—์„œ ํ•  ๊ฒƒ์ด๋‹ค. ๋ฐ์ดํ„ฐ ๊ฒ€์ฆ์˜ ๊ฒฝ์šฐ์—๋„, WDB์— ๊ธฐ๋ณธ ๋‚ด์žฅ๋œ ๊ธฐ๋Šฅ ๋ง๊ณ  ์‚ฌ์šฉ์ž๊ฐ€ ๋งŒ๋“ค์–ด ํ•˜๊ณ  ์‹ถ์€ ๊ฒ€์ฆ ์ ˆ์ฐจ๊ฐ€ ๋”ฐ๋กœ ..
2023.03.16
๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ/SpringMVC
thumbnail
๋ฐ์ดํ„ฐ ๋ณ€ํ™˜๊ณผ ๊ฒ€์ฆ(ํƒ€์ž… ๋ณ€ํ™˜ ์ถ”๊ฐ€ ํ•˜๋Š” ๋ฒ•, BindingResult ์ด์šฉ)
1.WebDataBinder์˜ ์›๋ฆฌ (๋ณต์Šต) (0)Binding์ด๋ž€? ์š”์ฒญ์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ปจํŠธ๋กค๋Ÿฌ ๋งค์†Œ๋“œ์˜ ์ธ์ˆ˜์™€ ์—ฐ๊ฒฐ ์‹œํ‚ค๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค. WebDataBinder๋Š” ์š”์ฒญ์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ Controller Method์˜ ์ธ์ˆ˜์— ๋งž๊ฒŒ ํ˜•๋ณ€ํ™˜์„ ์‹œ์ผœ์ฃผ๊ณ , ๋˜ ์ธ์ˆ˜๋กœ ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๊ฐ’์ธ์ง€ ํ™•์ธํ•˜๋Š” ์žฅ์น˜์ด๋‹ค. ํ•ด๋‹น ๊ณผ์ •์„ ๊ฑฐ์ณ์„œ ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ์ธ์ˆ˜์™€ ์—ฐ๊ฒฐ๋œ๋‹ค. (1) ํ˜• ๋ณ€ํ™˜ ์š”์ฒญ์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ๋ฌด์กฐ๊ฑด String์ด๊ธฐ ๋•Œ๋ฌธ์— ํ˜• ๋ณ€ํ™˜์ด ํ•„์š”ํ•˜๋‹ค. ์—ฌ๊ธฐ์„œ๋Š” MyDate๋ผ๋Š” ๊ฐ์ฒด๊ฐ€ ์ปจํŠธ๋กค๋Ÿฌ์˜ ์ธ์ˆ˜๋กœ ์“ฐ์˜€๊ณ , ๊ฐ์ฒด์˜ ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜๋กœ binding ๋˜์–ด์•ผ ํ•œ๋‹ค. (binding ๋  ๋Œ€์ƒ์€ Spring์ด ์•Œ์•„์„œ ์žก์•„์ค€๋‹ค.) ๋”ฐ๋ผ์„œ "2021"์„ int 2021๋กœ ๋ฐ”๊ฟ”์ฃผ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. ๋งŒ์•ฝ ์ด ๊ณผ์ •์—์„œ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด, (y..
2023.03.15
๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ/SpringMVC
thumbnail
DispatcherServlet Source ๊นŒ๋ณด๊ธฐ (์–ด๋–ป๊ฒŒ ๋Œ์•„๊ฐ€๋Š”์ง€)
1. DispatcherServlet์ด๋ž€ ๋ญ์˜€๋‚˜? (๋ณต์Šต) ๋ณธ๋ž˜ ํ•˜๋‚˜์˜ ์„œ๋ธ”๋ฆฟ์— ์ž…๋ ฅ ์ฒ˜๋ฆฌ ์ถœ๋ ฅ ๊ณผ์ •์ด ๋‹ค ๋‹ด๊ฒจ ์žˆ์—ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ๋ชจ๋“  ์„œ๋ธ”๋ฆฟ์— ๊ณตํ†ต์ ์ด๊ณ  ๋Œ์•„๊ฐ€๋Š” ์›๋ฆฌ์˜ ์ฐจ์ด๊ฐ€ ์—†๋Š” ์ž…๋ ฅ ๋ถ€๋ถ„์„ ์•ž์œผ๋กœ ๋นผ์„œ, ํ•˜๋‚˜์˜ ์„œ๋ธ”๋ฆฟ์œผ๋กœ ๋งŒ๋“ค์—ˆ๋‹ค. (์ฒ˜๋ฆฌ๋‚˜ ์ถœ๋ ฅ์€ ์„œ๋ธ”๋ฆฟ๋งˆ๋‹ค ๊ธฐ๋Šฅ์ด ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์ง€๋งŒ, ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์„ ๋ฐ›๋Š” ์ž…๋ ฅ๋ถ€๋ถ„์€ ๊ฑฐ์˜ ๋ชจ๋“  ์„œ๋ธ”๋ฆฟ์ด ๊ณตํ†ต์ ์œผ๋กœ ๊ฐ™๋‹ค.) ์ด๊ฒƒ์ด ๋””์ŠคํŒจ์ณ ์„œ๋ธ”๋ฆฟ์ด๋‹ค. ์Šคํ”„๋ง์€ ์„œ๋ธ”๋ฆฟ์„ ์ „์ฒ˜๋ฆฌ ์ „๋‹ดํ•˜๋Š” DispatcherServlet๊ณผ ์ฒ˜๋ฆฌ๋‹ด๋‹น Controller, ์ถœ๋ ฅ๋‹ด๋‹น View๋กœ ๋‚˜๋ˆ„์–ด์„œ ๊ด€์‹ฌ์‚ฌ๋ฅผ ๋ถ„๋ฆฌํ–ˆ๋‹ค. (๊ด€์‹ฌ์‚ฌ๋ž€ ์‚ฌ์šฉ์ž๊ฐ€ ๊ด€์‹ฌ์„ ๊ฐ€์ง€๊ณ  ํ•ด๊ฒฐํ•ด์•ผํ•  ์ž‘์—…์„ ๋งํ•œ๋‹ค. MVC ํŒจํ„ด์€ ํ•ด๊ฒฐํ•ด์•ผํ•  ๋ถ„์•ผ๋ฅผ ๊ฐ๊ฐ DisPatcherServlet, Controller, view๋กœ ๋‚˜๋ˆ„์–ด์„œ ๊ด€..
2023.03.14
๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ/SpringMVC
thumbnail
Spring์—์„œ ์˜ˆ์™ธ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•(2)
์ €๋ฒˆ ์‹œ๊ฐ„๊นŒ์ง€ ์ •๋ฆฌํ•œ ๋‚ด์šฉ์œผ๋กœ ์„œ๋ฒ„ ์ฒ˜๋ฆฌํ•˜๋‹ค๊ฐ€ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ์‹œ ์ด๋ฅผ ๋Œ€์ฒ˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด 3๊ฐ€์ง€๊ฐ€ ์žˆ์—ˆ๋‹ค. (1) ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๊ตฌ๋ฌธ์„ try - catch๋กœ ๋ฌถ๋Š”๋‹ค. ์ด๋Š” ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๊ตฌ๋ฌธ๋งˆ๋‹ค try-catch ๊ตฌ๋ฌธ์œผ๋กœ ๋ฌถ์–ด์•ผ ํ•ด์„œ ์•„์ฃผ ๋น„ํšจ์œจ์ ์ด์—ˆ๋‹ค. (2) ์ปจํŠธ๋กค๋Ÿฌ ๋‚ด๋ถ€์— ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋งŒ ๋‹ด๋‹นํ•˜๋Š” ๋งค์†Œ๋“œ ๋งŒ๋“ค๊ธฐ. ์˜ˆ์™ธ์ฒ˜๋ฆฌ ๋งค์†Œ๋“œ์˜ ์–ด๋…ธํ…Œ์ด์…˜์€ @ExceptionHandler ์ด๋‹ค. ์ž‘๋™์›๋ฆฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. a. ํ•ด๋‹น ์ปจํŠธ๋กค๋Ÿฌ ๋‚ด๋ถ€์˜ ์–ด๋–ค ๋งค์†Œ๋“œ์—์„œ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ , ๊ทธ ๋งค์†Œ๋“œ๋Š” ์˜ˆ์™ธ๋ฅผ ๋ฐ–์œผ๋กœ ๋˜์ง„๋‹ค. (throws) b. @ExceptionHandler ์–ด๋…ธํ…Œ์ด์…˜์ด ๋ถ™์€ ๋งค์†Œ๋“œ ์ค‘ ํ•ด๋‹น ์˜ˆ์™ธ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๋งค์†Œ๋“œ๊ฐ€ ์žˆ๋‹ค๋ฉด catch ๊ตฌ๋ฌธ์ฒ˜๋Ÿผ ํ•ด๋‹น ์˜ˆ์™ธ๋ฅผ ๊ฐ์ฒด๋กœ ๋ฐ›์•„์„œ ์ฒ˜๋ฆฌํ•œ๋‹ค. **..
2023.03.12
๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ/SpringMVC
thumbnail
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
thumbnail
์„ธ์…˜(Session) ์‹ค์Šต(2)
์ €๋ฒˆ ์‹œ๊ฐ„์— ํ–ˆ๋˜ ๋‚ด์šฉ์„ ๋ณต๊ธฐ ํ•ด๋ณด๊ฒ ๋‹ค. ๋จผ์ € ํ™ˆํ™”๋ฉด์—์„œ ๊ฒŒ์‹œํŒ ํ™”๋ฉด์œผ๋กœ ๋“ค์–ด๊ฐ€๋ ค ํ–ˆ๋Š”๋ฐ, ์ด๋•Œ ํด๋ผ์ด์–ธํŠธ๋กœ ๋กœ๊ทธ์ธ ์ƒํƒœ์ธ์ง€ ์•„๋‹Œ์ง€ ์ฒดํฌํ•œ๋‹ค. ๋กœ๊ทธ์ธ ์ƒํƒœ๋ผ๋ฉด ๋ฐ”๋กœ ๊ฒŒ์‹œํŒ ํ™”๋ฉด์œผ๋กœ ๋„˜์–ด๊ฐ„๋‹ค. ๋กœ๊ทธ์ธ ์•ˆ ํ•œ ์ƒํƒœ๋ฉด, ๋กœ๊ทธ์ธ ์ฐฝ์„ ๋„์šด๋‹ค. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋กœ๊ทธ์ธ์„ ํ•˜๋ฉด ๋‹ค์‹œ ํ™ˆ ํ™”๋ฉด์œผ๋กœ ์ด๋™ํ•œ๋‹ค. ๋กœ์ง์€ ๋ฐ‘๊ณผ ๊ฐ™๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ์ด๋ฒˆ์— ํ•˜๋ ค๋Š” ๊ฒƒ์€ ๋กœ๊ทธ์ธ ์„ฑ๊ณตํ•˜๋ฉด ๋‹ค์‹œ ์ž๊ธฐ๊ฐ€ ๊ฐˆ๋ ค๊ณ  ํ–ˆ๋˜ ํŽ˜์ด์ง€๋กœ ๋‹ค์‹œ ํด๋ผ์ด์–ธํŠธ๋ฅผ ๋ณด๋‚ด๋Š” ๊ฒƒ์ด๋‹ค. ๋‚œ ๋ฌด์‹ ์‚ฌ์—์„œ ์˜ท์„ ์‚ด๋ ค๊ณ  ํ–ˆ๋Š”๋ฐ, ๋กœ๊ทธ์ธ ์ƒํƒœ๊ฐ€ ์•„๋‹Œ ๊ฒƒ์„ ๊นŒ๋จน์€ ์ ์ด ์žˆ๋‹ค. ๋กœ๊ทธ์ธ์„ ํ•˜๋‹ˆ ๋‹ค์‹œ ํ™ˆ ํ™”๋ฉด์œผ๋กœ ๊ฐ€์„œ ๋‚ด๊ฐ€ ์‚ด๋ ค ํ–ˆ๋˜ ์˜ท์„ ๋‹ค์‹œ ์ฐพ์•„์•ผ ํ•ด ์งœ์ฆ ๋‚ฌ๋˜ ์ ์ด ์žˆ๋‹ค. ์ด๋ฒˆ ์›นํŽ˜์ด์ง€ ์—์„œ๋Š” ๊ทธ๋Ÿฐ ์• ๋กœ์‚ฌํ•ญ์ด ์—†๋„๋ก ๊ฒŒ์‹œํŒ์— ๋“ค์–ด๊ฐ€๋ ค ํ–ˆ๋˜ ์‚ฌ์šฉ์ž๊ฐ€ ๋กœ๊ทธ์ธ ํ•  ์‹œ ๊ทธ๋Œ€๋กœ ๊ฒŒ์‹œํŒ ํŽ˜์ด์ง€..
2023.03.10
๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ/SpringMVC
thumbnail
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
thumbnail
Session- ์ด๋ก 
1. ์„ธ์…˜์ด๋ž€? Session์€ ์„œ๋กœ ๊ด€๋ จ๋œ HTTP ํŠธ๋ Œ์ ์…˜์„ ์„œ๋ฒ„๊ฐ€ ๊ตฌ๋ณ„ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋ฐ ๋ฌถ์–ด ๋†“๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค. ํ•˜๋‚˜์˜ ๋ธŒ๋ผ์šฐ์ €์— ๋Œ€์‘ํ•˜๋Š” ์„ธ์…˜ ๊ฐ์ฒด(์ €์žฅ์†Œ)๋Š” ํ•˜๋‚˜์ด๋‹ค. (1๋Œ€1 ๋Œ€์‘) (๋‹ค๋ฅธ PC์—์„œ ๋‚˜์˜จ ๋ธŒ๋ผ์šฐ์ €, ํ•œ PC์—์„œ๋„ ์„œ๋กœ ๋‹ค๋ฅธ ๋ธŒ๋ผ์šฐ์ €๋ผ๋ฉด ์„ธ์…˜ ID๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅด๋‹ค.) (HTTPํŠธ๋ Œ์ ์…˜ - ์š”์ฒญ๊ณผ ์‘๋‹ต ํ•œ ์„ธํŠธ๋ฅผ ๋งํ•จ. ์š”์ฒญ๋“ค์€ ์„œ๋กœ ๋…๋ฆฝ์ ์ด๋ผ, ์„ธ์…˜์ด๋‚˜ ์ฟ ํ‚ค๊ฐ€ ์—†์œผ๋ฉด ์„œ๋ฒ„๋Š” ํ•ด๋‹น ์š”์ฒญ์ด ๊ฐ™์€ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ์„œ ์˜จ ๊ฒƒ์ธ์ง€ ์•„๋‹Œ์ง€ ๊ตฌ๋ณ„ํ•˜์ง€ ๋ชปํ•œ๋‹ค.) ์„ธ์…˜์€ ์„œ๋ฒ„์— ๊ฐ์ฒด๋กœ์„œ ์กด์žฌํ•˜๊ณ , ์„œ๋กœ ์—ฐ๊ด€๋œ ์š”์ฒญ๋“ค์„ ํ•˜๋‚˜๋กœ ๋ฌถ๊ธฐ ์œ„ํ•ด ์ฟ ํ‚ค๋ฅผ ์ด์šฉํ•œ๋‹ค. 2. ์„ธ์…˜์ด ๋Œ์•„๊ฐ€๋Š” ๊ณผ์ •. (1) ์„ธ์…˜์˜ ์ƒ์„ฑ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ฒซ ๋ฒˆ์งธ ์š”์ฒญ์ด ์˜ค๋Š” ์ˆœ๊ฐ„, ์„œ๋ฒ„์—์„œ๋Š” ํ•ด๋‹น ์š”์ฒญ์— ๋Œ€ํ•œ ์„ธ์…˜์„ ๋งŒ๋“ ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์š”์ฒญ์—..
2023.03.09
๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ/SpringMVC
thumbnail
์ฟ ํ‚ค๋ž€?
1. ์ฟ ํ‚ค๊ฐ€ ํ•˜๋Š” ์—ญํ• ์ด ๋ฌด์—‡์ผ๊นŒ? ํŠน์ • ์›น์‚ฌ์ดํŠธ์—๋Š” ์•„์ด๋”” ๊ธฐ์–ตํ•˜๊ธฐ๋ž€ ์žฅ์น˜๊ฐ€ ์žˆ๋‹ค. ์ด๋Š” ํ•œ๋ฒˆ ๋กœ๊ทธ์ธ ํ–ˆ์œผ๋ฉด ๋‹ค์Œ์— ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€๋ฅผ ์žฌ๋ฐฉ๋ฌธ ํ–ˆ์„ ๋•Œ, ํ•ด๋‹น ์•„์ด๋””๊ฐ€ ๋ฏธ๋ฆฌ ์ฐํ˜€ ์žˆ๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๊ฐœ๋ฐœ์ž ๋„๊ตฌ๋ฅผ ํ†ตํ•ด ์ฟ ํ‚ค๊ฐ€ ๋ญ ์žˆ๋‚˜ ํ™•์ธํ•ด๋ณด๋ฉด, id๋ž€ ์ด๋ฆ„์œผ๋กœ ์ฟ ํ‚ค๊ฐ€ ๋“ค์–ด์žˆ๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ์•ž์—์„œ ๋ฐฐ์› ๋‹ค์‹œํ”ผ, HTTP๋Š” ์ƒํƒœ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋”ฐ๋ผ์„œ ํด๋ผ์ด์–ธํŠธ๋Š” ์—ฐ์†์ ์œผ๋กœ ์˜จ ๋‘ ์š”์ฒญ์ด ๊ฐ™์€ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ์„œ ์˜จ ๊ฒƒ์ธ์ง€, ๋‹ค๋ฅธ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ์„œ ์˜จ ๊ฒƒ์ธ์ง€ ์•Œ ์ˆ˜ ์—†๋‹ค. ํ•˜์ง€๋งŒ ๋•Œ๋•Œ๋กœ ์„œ๋ฒ„๊ฐ€ ์ „ ํด๋ผ์ด์–ธํŠธ์˜ ํ–‰๋™์„ ๊ธฐ์–ตํ•ด์•ผ๋งŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์ผ์ด ์žˆ๋‹ค. (ex - ๋กœ๊ทธ์ธ ํ›„์—๋งŒ ํ•  ์ˆ˜ ์žˆ๋Š” ํ–‰๋™ ๋“ฑ) ์ฟ ํ‚ค๋Š” ํด๋ผ์ด์–ธํŠธ๋ฅผ ์‹๋ณ„ํ•˜๋Š” ๊ธฐ์ˆ ์ด๋‹ค. ์„œ๋ฒ„๊ฐ€ ์ฟ ํ‚ค๋ฅผ ์ด์šฉํ•˜๋ฉด ํด๋ผ์ด์–ธํŠธ๋ฅผ ๊ตฌ๋ณ„ํ•  ์ˆ˜ ์žˆ๋‹ค. 2..
2023.03.05
๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ/SpringMVC
thumbnail
Redirect์™€ Forward์— ๋Œ€ํ•˜์—ฌ
1. ์›๋ฆฌ (1) redirect a. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํŠน์ • ์ฃผ์†Œ๋กœ ์š”์ฒญ์„ ๋ณด๋ƒ„. b. ๊ทผ๋ฐ ์„œ๋ฒ„๊ฐ€ ๋ฐ›์•„๋ณด๋‹ˆ ํ•ด๋‹น ์ผ์€ ํ•ด๋‹น ์ฃผ์†Œ์—์„œ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†๋Š” ์ผ์ž„. c. ๊ทธ๋ž˜์„œ ์„œ๋ฒ„๋Š” ์‘๋‹ต ๋ฉ”์„ธ์ง€ Header์—๋‹ค๊ฐ€ ์ƒํƒœ์ฝ”๋“œ 300(redirect ์š”์ฒญ)๊ณผ ํ•จ๊ป˜ ์–ด๋””๋กœ ๊ฐ€์•ผ ์ด ์ผ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์ฃผ์†Œ(location)๋ฅผ ๊ฐ™์ด ์จ์„œ ๋‹ค์‹œ ๋ธŒ๋ผ์šฐ์ €์—๊ฒŒ ๋ณด๋‚ธ๋‹ค. d. ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ž๋™์œผ๋กœ ํ•ด๋‹น ์ฃผ์†Œ๋กœ ์žฌ์š”์ฒญ์„ ํ•œ๋‹ค. (๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์žฌ์š”์ฒญ ์‹œ ์ƒ๋‹จ์˜ URL์ด ์žฌ์š”์ฒญ๋œ ์ฃผ์†Œ๋กœ ๋ฐ”๋€Œ์–ด์„œ ํด๋ผ์ด์–ธํŠธ๋„ ์žฌ์š”์ฒญ ํ•˜๋Š” ์ค„ ์•Œ ์ˆ˜ ์žˆ์Œ.) e. ์˜ฌ๋ฐ”๋ฅธ ์ฃผ์†Œ๊ฐ€ ์‘๋‹ตํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ์˜ ๋ธŒ๋ผ์šฐ์ €์— ๋„์›Œ์ง„๋‹ค. (์ด ๋•Œ ์ด ์ž๋™์š”์ฒญ์€ ์˜ค๋กœ์ง€ GET ์š”์ฒญ๋ฐ–์— ์•ˆ๋œ๋‹ค. ๋”ฐ๋ผ์„œ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋กœ๊ทธ์ธ ์ •๋ณด ์ณ์„œ ๋ณด๋ƒˆ๋‹คํ•˜๋”๋ผ๋„ redirect ๋˜๋ฉด ์˜ฌ๋ฐ”๋ฅธ..
2023.03.04
๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ/SpringMVC
thumbnail
@RequestMapping More , ์ธ์ฝ”๋”ฉ์˜ ์›๋ฆฌ
1. @RequestingMapping more (1) RequestMethod๊ฐ€ ๋‹ค๋ฅด๋ฉด ๊ฐ™์€ URL ์ฃผ์†Œ๋ฅผ ๊ฐ€์ ธ๋„ ๋œ๋‹ค. @RequestMapping๋งŒ ํ•˜๋˜ ์‹œ์ ˆ์—๋Š” ๋งค์†Œ๋“œ ๊ฐ„์— ๋งคํ•‘ URL ์ฃผ์†Œ๊ฐ€ ๊ฐ™์œผ๋ฉด ์—๋Ÿฌ๊ฐ€ ๋‚ฌ๋‹ค. ํ•˜์ง€๋งŒ @PostMapping๊ณผ @GetMapping์€ ์„œ๋กœ ํ•˜๋Š” ์ž‘์—…์ด ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— URL ์ฃผ์†Œ๊ฐ€ ๊ฐ™์•„๋„ ๋œ๋‹ค. @GET์€ ์„œ๋ฒ„์—์„œ ์ •๋ณด๋ฅผ ์–ป์–ด์˜ค๋Š” ๊ฑฐ๊ณ , @Post๋Š” ์ •๋ณด๋ฅผ ์„œ๋ฒ„์˜ ๋ฐ์ดํ„ฐ์— ๊ธฐ๋กํ•˜๋Š” ๊ฒƒ์ด๋‹ค. (2)ํ•˜๋‚˜์˜ ์ปจํŠธ๋กค ๋‚ด ๋งค์†Œ๋“œ ๊ฐ„์— ๋™์ผํ•œ ์ฃผ์†Œ๋Š” @RequestMapping์„ ์จ ๋ฌถ์–ด์ค„ ์ˆ˜ ์žˆ๋‹ค. @Contorller ๋ฐ‘, ํด๋ž˜์Šค ์ด๋ฆ„ ์œ„์— @RequestMapping์„ ์จ์„œ ์ค‘๋ณต๋˜๋Š” ์ฃผ์†Œ๋Š” ๋ฌถ์–ด์ค„ ์ˆ˜ ์žˆ๋‹ค. ์ด๋Ÿฌ๋ฉด ๋งค์†Œ๋“œ ๋ณ„๋กœ ๋งคํ•‘๋œ ์ฃผ์†Œ๊ฐ€ ์ •๋ง ์ ๊ณ , ๋ฌด์Šจ ์ผ ํ•˜๋ ค๋Š”..
2023.03.04
๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ/SpringMVC
thumbnail
@ ์–ด๋…ธํ…Œ์ด์…˜ ์ „๋ฌธํ™”, view Controller, Redirection
1. @ RequestMapping์˜ ์ „๋ฌธํ™” @RequestMapping์œผ๋กœ URL๊ณผ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ Mapping ํ•ด๋ฒ„๋ฆฌ๋ฉด ์‚ฌ์šฉ์ž๋Š” GetMapping PostMapping ๋‘ ๋ฐฉ๋ฒ• ๋‹ค ์‚ฌ์šฉํ•˜์—ฌ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํšŒ์›๊ฐ€์ž… ์‹œ GetMapping์œผ๋กœ ์ŠคํŠธ๋ง ์ฟผ๋ฆฌ์— ํšŒ์› ๊ฐ€์ž… ๋‚ด์šฉ์„ ๋‹ค ์ ์€ ์ฑ„ ์ž‘์„ฑํ•  ์ˆ˜๋„ ์žˆ๊ณ , PostMapping์œผ๋กœ ๊ฐœ์ธ ์ •๋ณด๋Š” ์ „๋ถ€ body์— ๋„ฃ์–ด ๊ธฐ์ž… ํ•  ์ˆ˜ ๋„ ์žˆ๋‹ค. ๋‹น์—ฐํ•˜์ง€๋งŒ, GetMapping์œผ๋กœ ๊ฐœ์ธ์ •๋ณด๋ฅผ ์ž‘์„ฑํ•˜๋ฉด ๋ธŒ๋ผ์šฐ์ €์— ๋…ธ์ถœ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋ณด์•ˆ์ ์œผ๋กœ ์ข‹์ง€ ์•Š๋‹ค. ์ด์™€ ๊ฐ™์ด ํŠน์ • ์ƒํ™ฉ์— ๋Œ€ํ•ด Getmapping ํ˜น์€ PostMapping์œผ๋กœ๋งŒ ์ปจํŠธ๋กค๋Ÿฌ์™€ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ Mapping ๋˜๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ์ด์— ๋Œ€ํ•ด์„œ ๋…ผํ•ด๋ณธ๋‹ค. (1) @ RequestMa..
2023.03.04
๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ/SpringMVC