๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Spring

(65)
์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ์˜ ์ข…๋ฅ˜ BeanFactory ์Šคํ”„๋ง ์„ค์ •ํŒŒ์ผ์— ๋“ฑ๋ก๋œ Bean ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๊ธฐ๋ณธ์ ์ธ ๊ธฐ๋Šฅ๋งŒ ์ œ๊ณตํ•œ๋‹ค. ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์— ์˜ํ•ด์„œ Bean ๊ฐ์ฒด๊ฐ€ ์‚ฌ์šฉ๋˜๋Š” ์‹œ์ (Lazy Loading) ์— ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์Šคํ”„๋ง ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ์‚ฌ์šฉ๋  ์ผ์ด ์—†๋‹ค! BeanFactory๋ฅผ ์ƒ์†ํ•œ ApplicationContext Bean ๊ฐ์ฒด ์ƒ์„ฑ ๋ฐ ๊ด€๋ฆฌ, ํŠธ๋žœ์žญ์…˜ ๊ด€๋ฆฌ, ๋ฉ”์‹œ์ง€ ๊ธฐ๋ฐ˜์˜ ๋‹ค๊ตญ์–ด ์ฒ˜๋ฆฌ, AOP ์ฒ˜๋ฆฌ, ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ ์ง€์› ๋“ฑ ๋งŽ์€ ๋ถ€๋ถ„์„ ์ง€์›ํ•˜๊ณ  ์žˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๊ตฌ๋™๋˜๋Š” ์‹œ์ ์— ๊ฐ์ฒด๋“ค์„ ์ƒ์„ฑํ•˜๋Š” Pre-Loading ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•œ๋‹ค. ApplicationContext์˜ ๊ตฌํ˜„ ํด๋ž˜์Šค๋Š” ๋งค์šฐ ๋‹ค์–‘ํ•œ๋ฐ ๋ฐ‘์˜ ๋‘ ํด๋ž˜์Šค๋ฅผ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค. GenericXmlApplicationnCont..
IoC, ๋‚ฎ์€ ๊ฒฐํ•ฉ๋„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ดํ•ดํ•˜๊ธฐ IoC(Inversion of Control): ์ œ์–ด์˜ ์—ญํ–‰ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ๊ฐ์ฒด ๊ฐ„์˜ ์˜์กด๊ด€๊ณ„๋ฅผ ์†Œ์Šค์ฝ”๋“œ๋กœ ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š๊ณ  ์ปจํ…Œ์ด๋„ˆ๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. IoC๋ฅผ ์ด์šฉํ•˜๋ฉด ๋‚ฎ์€ ๊ฒฐํ•ฉ๋„์˜ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ฒฐํ•ฉ๋„๊ฐ€ ๋†’์€ ํ”„๋กœ๊ทธ๋žจ์€ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์–ด๋ ต๋‹ค. ๋ฐ‘์€ ๊ฒฐํ•ฉ๋„๊ฐ€ ๋†’์€ ํ”„๋กœ๊ทธ๋žจ์˜ ์˜ˆ์ด๋‹ค. public class LgTV { public void turnOn() { System.out.println("LgTV---์ „์› ์ผ ๋‹ค."); } public void turnOff() { System.out.println("LgTV---์ „์› ๋ˆ๋‹ค."); } public void soundUp() { System.out.println("LgTV---์†Œ๋ฆฌ ์˜ฌ๋ฆฐ๋‹ค."); } public voi..
ํ”„๋ ˆ์ž„์›Œํฌ๋ž€? ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ๋ž€? ํ”„๋ ˆ์ž„์›Œํฌ ๊ฐœ๋… ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ๊ฐœ๋ฐœ์—์„œ ๊ธฐ๋ณธ์ด ๋˜๋Š” ๋ผˆ๋Œ€๋‚˜ ํ‹€์„ ์ œ๊ณตํ•œ๋‹ค. ๊ฐœ๋ฐœ์ž๋Š” ๋ผˆ๋Œ€์— ์‚ด์„ ๋ถ™์ด๋Š” ์ž‘์—…์„ ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์žฅ์  ๋น ๋ฅธ ๊ตฌํ˜„ ์‹œ๊ฐ„ ์‰ฌ์šด ๊ด€๋ฆฌ ๊ฐœ๋ฐœ์ž๋“ค์˜ ์—ญ๋Ÿ‰ ํš์ผํ™” ๊ฒ€์ฆ๋œ ์•„ํ‚คํ…์ฒ˜์˜ ์žฌ์‚ฌ์šฉ๊ณผ ์ผ๊ด€์„œ ์œ ์ง€ ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ๋กœ๋“œ ์กด์Šจ์ด 2004๋…„์— ๋งŒ๋“  ์˜คํ”ˆ์†Œ์Šค ํ”„๋ ˆ์ž„์›Œํฌ์ด๋‹ค. ์Šคํ”„๋ง์€ ํ•œ ์ค„๋กœ "IoC์™€ AOP๋ฅผ ์ง€์›ํ•˜๋Š” ๊ฒฝ๋Ÿ‰์˜ ์ปจํ…Œ์ด๋„ˆ ํ”„๋ ˆ์ž„์›Œํฌ"๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ฒฝ๋Ÿ‰(Lightweight) ์Šคํ”„๋ง์€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ชจ๋“ˆ๋กœ ๊ตฌ์„ฑ๋˜์–ด์žˆ์œผ๋ฉฐ, ๊ฐ ๋ชจ๋“ˆ์€ ํ•˜๋‚˜ ์ด์ƒ์˜ JAR ํŒŒ์ผ๋กœ ๊ตฌ์„ฑ๋จ. ๋ช‡ ๊ฐœ์˜ JAR ํŒŒ์ผ๋งŒ ์žˆ์œผ๋ฉด ๊ฐœ๋ฐœ๊ณผ ์‹คํ–‰์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ POJO(Plain Old Java Object)ํ˜•ํƒœ์˜ ๊ฐ์ฒด๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค. (POJO๋Š” ํด๋ž˜์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๋Š”๋ฐ ํŠน๋ณ„ํ•œ ๊ทœ..
InTelliJ๋กœ ์Šคํ”„๋ง ํ”„๋กœ์ ํŠธ ์‹œ์ž‘ํ•˜๊ธฐ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ๊ตฌ์ถ• ์ฑ…์—์„œ๋Š” Eclipse, Tomcat ์„œ๋ฒ„, H2 database๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ํ•˜์ง€๋งŒ ๋‚˜๋Š” ๊ธฐ์กด์— eclipse๋กœ Spring ๊ฐœ๋ฐœ์„ ํ–ˆ๋‹ค๊ฐ€ ๋„ˆ๋ฌด ํ™”๋‚˜๋Š” ์ผ์ด ๋งŽ์•˜๋‹ค... ๊ทธ๋ž˜์„œ jetbrains์‚ฌ์˜ intelliJ๋กœ ์‹ค์Šต์„ ์ง„ํ–‰ํ•  ์˜ˆ์ •์ด๋‹ค. ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค ์—ญ์‹œ SQL๋ฌธ์„ ์ด๋ฏธ ์•Œ๊ณ  ์žˆ๋Š” MySQL๋กœ ๋ฐ”๊ฟ”์„œ ์ง„ํ–‰ํ•  ์˜ˆ์ •์ด๋‹ค. ๋‚˜์˜ ์‹ค์Šต ํ™˜๊ฒฝ์€ intelliJ + Tomcat ์„œ๋ฒ„ + MySQL์ด๋‹ค. Spring ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•˜๋Š” ๊ฒƒ์€ ์ƒ๊ฐ๋ณด๋‹ค ๋ณต์žกํ–ˆ๋‹ค. ์ธํ”„๋Ÿฐ์˜ "์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์„ ์œ„ํ•œ IntelliJ IDEA ์„ค์ •" ๋ฌด๋ฃŒ ๊ฐ•์˜๋ฅผ ํ†ตํ•ด ๋„์›€์„ ๋ฐ›์•˜๋‹ค. ๊ฐ•์˜์— ๋ง๋ถ™์ด์ž๋ฉด, ๋Œ€ํ•™์ƒ ์‹ ๋ถ„์ด๋ผ๋ฉด intelliJ์˜ ultimate(์œ ๋ฃŒํŒ)์„ ๋ฌด๋ฃŒ๋กœ ์‰ฝ๊ฒŒ ๋‹ค์šด ๋ฐ›์•„ ์“ธ ์ˆ˜ ์žˆ๋‹ค. ์‹ค์Šต ํ”„๋กœ..
๐Ÿ’ซ Spring Quick Start ๐Ÿ’ซ ์ฑ… ์ •๋ณด 2020.12.24-2020.12.28 ์™„๋… ๐Ÿ’ซ ์„œ๋ก  Spring์„ ๊ณต๋ถ€ํ•ด๋ณธ ์ด๋ ฅ์€ ์žˆ์œผ๋‚˜ ๊ทผ๋ณธ์ ์ธ ๊ฐœ๋…์„ ์—ฌ์ „ํžˆ ์ž˜ ๋ชจ๋ฅธ๋‹ค๊ณ  ํŒ๋‹จํ–ˆ๋‹ค. ๊ทธ๋ž˜์„œ Spring์— ๋Œ€ํ•œ ๋‘๋ ค์›€์ด ๋งŽ์•˜๋˜ ์ฐฐ๋‚˜, ์„ ๋ฐฐ๋‹˜์˜ ์ถ”์ฒœ์„ ํ†ตํ•ด ์ฑ…์„ ๊ตฌ๋งคํ•ด์„œ ๊ฐ€๋ณ๊ฒŒ ์ฝ์–ด๋ณด์•˜๋‹ค. ํ•ญ์ƒ ๊ฐ•์˜๋ฅผ ํ†ตํ•ด ๊ณต๋ถ€ํ–ˆ์—ˆ๋Š”๋ฐ, ๊ฐœ๋…๋“ค์ด ์ •๋ˆ๋œ ๋ง๋กœ ์ •๋ฆฌ๋˜์–ด ์žˆ์–ด์„œ ์ดํ•ด๊ฐ€ ํ›จ์”ฌ ์ž˜ ๋˜์—ˆ๋‹ค. ์•„๋Š” ๋ถ€๋ถ„์€ ๋น ๋ฅด๊ฒŒ ์ง€๋‚˜๊ฐ€๊ณ , ๋ชจ๋ฅด๋Š” ๋ถ€๋ถ„์€ ๊ฒ€์ƒ‰ํ•˜๋ฉด์„œ ์—ด์‹ฌํžˆ ์ฝ์—ˆ๋‹ค. ๋•๋ถ„์— ๋„ˆ๋ฌด ํšจ์œจ์ ์œผ๋กœ ๊ณต๋ถ€ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. java ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ ์ง€๋Š” ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ, ์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด์„œ ๊นŒ๋จน๋Š” ๊ฒŒ ์•„๊น๊ธฐ๋„ ํ•˜๊ณ  ๊ธฐ๋กํ•˜๋ฉด์„œ ๋น ๋ฅด๊ฒŒ 2ํšŒ๋… ํ•˜๋Š” ๊ฒƒ๋„ ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค๊ณ  ์ƒ๊ฐํ•ด์„œ ์ •๋ฆฌ ๋…ธํŠธ๋ฅผ ์ฝ”๋“œ์™€ ํ•จ๊ป˜ ์ž‘์„ฑํ•˜๋ ค ํ•œ๋‹ค. ์ฝ”๋“œ๋ฅผ ์ •๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ๋ฐ”๋กœ ์ด ๋ ˆํฌ์ง€ํ† ๋ฆฌ์˜ ๋ชฉ์ ์ด๋ผ ํ•  ์ˆ˜ ์žˆ๊ฒ ๋‹ค. ์ •..
5.1 ์ƒํƒœ์œ ์ง€๊ธฐ์ˆ  - Cookie & Session 1) ์ƒํƒœ์ •๋ณด๋ž€? ์›น์—์„œ์˜ ์ƒํƒœ ์œ ์ง€ ๊ธฐ์ˆ  HTTPํ”„๋กœํ† ์ฝœ์€ ์ƒํƒœ ์œ ์ง€๊ฐ€ ์•ˆ๋˜๋Š” ํ”„๋กœํ† ์ฝœ์ž…๋‹ˆ๋‹ค. - ์ด์ „์— ๋ฌด์—‡์„ ํ–ˆ๊ณ , ์ง€๊ธˆ ๋ฌด์—‡์„ ํ–ˆ๋Š”์ง€์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๊ฐ–๊ณ  ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. - ์›น ๋ธŒ๋ผ์šฐ์ €(ํด๋ผ์ด์–ธํŠธ)์˜ ์š”์ฒญ์— ๋Œ€ํ•œ ์‘๋‹ต์„ ํ•˜๊ณ  ๋‚˜๋ฉด ํ•ด๋‹น ํด๋ผ์ด์–ธํŠธ์™€์˜ ์—ฐ๊ฒฐ์„ ์ง€์†ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ƒํƒœ ์œ ์ง€๋ฅผ ์œ„ํ•ด Cookie์™€ Session๊ธฐ์ˆ ์ด ๋“ฑ์žฅํ•ฉ๋‹ˆ๋‹ค. ์ฟ ํ‚ค(Cookie)์™€ ์„ธ์…˜(Session) ์ฟ ํ‚ค - ์‚ฌ์šฉ์ž ์ปดํ“จํ„ฐ์— ์ €์žฅ - ์ €์žฅ๋œ ์ •๋ณด๋ฅผ ๋‹ค๋ฅธ ์‚ฌ๋žŒ ๋˜๋Š” ์‹œ์Šคํ…œ์ด ๋ณผ ์ˆ˜ ์žˆ๋Š” ๋‹จ์  - ์œ ํšจ์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด ์‚ฌ๋ผ์ง ์„ธ์…˜ - ์„œ๋ฒ„์— ์ €์žฅ - ์„œ๋ฒ„๊ฐ€ ์ข…๋ฃŒ๋˜๊ฑฐ๋‚˜ ์œ ํšจ์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค. ์ฟ ํ‚ค(Cookie) ๋™์ž‘ ์ดํ•ด ์„ธ์…˜์˜ ๋™์ž‘ ์ดํ•ด HttpSession์ด๋ผ๋Š” ๊ฐ์ฒด: ์„ธ์…˜์˜ ์ •๋ณด๋ฅผ ๋‹ด๊ธฐ ์œ„ํ•ด ์ƒ์„ฑ๋˜๋Š” ๊ฐ์ฒด 2) ..
4.5 Swagger 1) Swagger ๊ฐœ์š” 1. ์Šค์›จ๊ฑฐ(Swagger)๋ž€? ์Šค์›จ๊ฑฐ๋Š” Web API ๋ฌธ์„œํ™”๋ฅผ ์œ„ํ•œ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ์Šค์›จ๊ฑฐ ํ™ˆํŽ˜์ด์ง€(https://swagger.io)์—์„œ๋Š” ์Šค์›จ๊ฑฐ๋ฅผ OAS(Open API Specification)์ด๋ผ๊ณ  ์†Œ๊ฐœํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ง๊ทธ๋Œ€๋กœ API๋“ค์ด ๊ฐ€์ง€๋Š” ๋ช…์„ธ(Spec)์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ํ”„๋กœ์ ํŠธ๋ผ๊ณ  ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Web API๋ฅผ ์ˆ˜๋™์œผ๋กœ ๋ฌธ์„œํ™” ํ•˜๋Š” ๊ฒƒ์€ ๊ต‰์žฅํžˆ ํž˜๋“  ์ž‘์—…์ž…๋‹ˆ๋‹ค. Web API์˜ ์ŠคํŽ™์ด ๋ณ€๊ฒฝ๋˜์—ˆ์„ ๋•Œ ๋ฌธ์„œ ์—ญ์‹œ ๋ณ€๊ฒฝ์ด ๋˜์•ผ ํ•˜๋Š”๋ฐ ์ด๋ฅผ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด ์‰ฝ์ง€๊ฐ€ ์•Š์Šต๋‹ˆ๋‹ค. Swagger๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด Web API๊ฐ€ ์ˆ˜์ •๋˜๋”๋ผ๋„ ์ƒ๊ด€ ์—†์Šต๋‹ˆ๋‹ค. ๋ฌธ์„œ๊ฐ€ ์ž๋™์œผ๋กœ ๊ฐฑ์‹ ์ด ๋˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. 2. ์Šค์›จ๊ฑฐ์˜ ๊ธฐ๋Šฅ ์Šค์›จ๊ฑฐ ํ™ˆํŽ˜์ด์ง€๋ฅผ ๊ฐ€๋ณด๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ๊ธฐ๋Šฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค. 1) API ..
4.4 Controller 1) RestController๋ž€? Spring MVC์—์„œ ์ œ๊ณตํ•˜๋Š” RestController @RestController Spring 4 ์—์„œ Rest API ๋˜๋Š” Web API๋ฅผ ๊ฐœ๋ฐœํ•˜๊ธฐ ์œ„ํ•ด ๋“ฑ์žฅํ•œ ์–ด๋…ธํ…Œ์ด์…˜ ํ•ฉ๋‹ˆ๋‹ค. ์ด์ „ ๋ฒ„์ „์˜ @Controller์™€ @ResponseBody๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. MessageConvertor ์ž๋ฐ” ๊ฐ์ฒด์™€ HTTP ์š”์ฒญ / ์‘๋‹ต ๋ฐ”๋””๋ฅผ ๋ณ€ํ™˜ํ•˜๋Š” ์—ญํ•  @ResponseBody, @RequestBody @EnableWebMvc ๋กœ ์ธํ•œ ๊ธฐ๋ณธ ์„ค์ • WebMvcConfigurationSupport ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Spring MVC ๊ตฌํ˜„ Default MessageConvertor ๋ฅผ ์ œ๊ณต ๋งํฌ ๋ฐ”๋กœ๊ฐ€๊ธฐ์˜ addDefaultHttpMessageConverters๋ฉ”์†Œ๋“œ ํ•ญ๋ชฉ ์ฐธ์กฐ M..
4.3 WEB API 1) Rest API๋ž€? HTTP ํ”„๋กœํ† ์ฝœ์„ ์ด์šฉํ•˜์—ฌ ๋ธŒ๋ผ์šฐ์ €๋Š” ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ›์•„ ๋žœ๋”๋งํ•˜์—ฌ ํ™”๋ฉด์— ๋ณด์—ฌ์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. HTTP์˜ ์ด๋Ÿฐ ํŠน์ง•์„ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ํด๋ผ์ด์–ธํŠธ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์„๊นŒ? ๋ผ๋Š” ๊ณ ๋ฏผ์„ ๊ฐœ๋ฐœ์ž๋“ค์€ ํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ, ๋ชจ๋ฐ”์ผ ์•ฑ, Javascript ๋“ฑ์—์„œ HTTP๋กœ ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์˜ฌ ์ˆ˜ ์—†์„๊นŒ? ํ•˜๋Š” ์ƒ๊ฐ์„ ํ•˜๊ฒŒ ๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ •๋ถ€์—์„œ ๋ฒ„์Šค ์šดํ–‰ ์‹œ๊ฐ„ํ‘œ๋ฅผ ์ œ๊ณตํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ •๋ถ€์—์„œ๋Š” 300๋ฒˆ ๋ฒ„์Šค์— ๋Œ€ํ•œ ์‹œ๊ฐ„ํ‘œ๋ฅผ ์ œ๊ณตํ•˜๋Š” URL์„ ์•„๋ž˜์™€ ๊ฐ™์€ ํ˜•ํƒœ๋กœ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. http://ip์ฃผ์†Œ/api/buses/300 ์œ„์™€ ๊ฐ™์€ URL์„ ํ˜ธ์ถœ ํ•˜๊ฒŒ ๋˜์—ˆ์„ ๋•Œ ์‹œ๊ฐ„ํ‘œ ์ •๋ณด๋ฅผ ํŠน์ •ํ•œ ํ˜•ํƒœ๋กœ ์ œ๊ณตํ•œ๋‹ค๋ฉด, ๊ทธ ์ •๋ณด๋ฅผ ๋‹ค์–‘ํ•œ..
4.2 Layered Architecture 1) ๋ ˆ์ด์–ด๋“œ ์•„ํ‚คํ…์ฒ˜๋ž€? Controller์—์„œ ์ค‘๋ณต๋˜๋Š” ๋ถ€๋ถ„์„ ์ฒ˜๋ฆฌํ•˜๋ ค๋ฉด? ๋ณ„๋„์˜ ๊ฐ์ฒด๋กœ ๋ถ„๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๋ณ„๋„์˜ ๋ฉ”์†Œ๋“œ๋กœ ๋ถ„๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์‡ผํ•‘๋ชฐ์—์„œ ๊ฒŒ์‹œํŒ์—์„œ๋„ ํšŒ์› ์ •๋ณด๋ฅผ ๋ณด์—ฌ์ฃผ๊ณ , ์ƒํ’ˆ ๋ชฉ๋ก ๋ณด๊ธฐ์—์„œ๋„ ํšŒ์› ์ •๋ณด๋ฅผ ๋ณด์—ฌ์ค˜์•ผ ํ•œ๋‹ค๋ฉด ํšŒ์› ์ •๋ณด๋ฅผ ์ฝ์–ด์˜ค๋Š” ์ฝ”๋“œ๋Š” ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ๊นŒ์š”? ์ปจํŠธ๋กค๋Ÿฌ์™€ ์„œ๋น„์Šค ๋น„์ง€๋‹ˆ์Šค ๋ฉ”์†Œ๋“œ๋ฅผ ๋ณ„๋„์˜ Service๊ฐ์ฒด์—์„œ ๊ตฌํ˜„ํ•˜๋„๋ก ํ•˜๊ณ  ์ปจํŠธ๋กค๋Ÿฌ๋Š” Service๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ์„œ๋น„์Šค(Service)๊ฐ์ฒด๋ž€? ๋น„์ง€๋‹ˆ์Šค ๋กœ์ง(Business logic)์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฐ์ฒด๋ฅผ ์„œ๋น„์Šค ๊ฐ์ฒด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋ณดํ†ต ํ•˜๋‚˜์˜ ๋น„์ง€๋‹ˆ์Šค ๋กœ์ง์€ ํ•˜๋‚˜์˜ ํŠธ๋žœ์žญ์…˜์œผ๋กœ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค. ํŠธ๋žœ์žญ์…˜(Transaction)์ด๋ž€? ํŠธ๋žœ์žญ์…˜์˜ ํŠน์ง•์€ ํฌ๊ฒŒ 4๊ฐ€์ง€๋กœ ๊ตฌ๋ถ„๋ฉ๋‹ˆ๋‹ค. ์›์ž์„ฑ (..
4.1 Spring MVC 1) Spring MVC๋ž€? MVC๋ž€? MVC๋Š” Model-View-Controller์˜ ์•ฝ์ž์ž…๋‹ˆ๋‹ค. ์›๋ž˜๋Š” ์ œ๋ก์Šค ์—ฐ๊ตฌ์†Œ์—์„œ ์ผํ•˜๋˜ ํŠธ๋คผ๊ทธ๋ฒ  ๋ฆฐ์ฆˆ์ปค๊ทธ๊ฐ€ ์ฒ˜์Œ์œผ๋กœ ์†Œ๊ฐœํ•œ ๊ฐœ๋…์œผ๋กœ, ๋ฐ์ŠคํŠธํ†ฑ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์šฉ์œผ๋กœ ๊ณ ์•ˆ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Model : ๋ชจ๋ธ์€ ๋ทฐ๊ฐ€ ๋ Œ๋”๋งํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์‚ฌ์šฉ์ž๊ฐ€ ์š”์ฒญํ•œ ์ƒํ’ˆ ๋ชฉ๋ก์ด๋‚˜, ์ฃผ๋ฌธ ๋‚ด์—ญ์ด ์ด์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค. View : ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋ทฐ(View)๋Š” ์‹ค์ œ๋กœ ๋ณด์ด๋Š” ๋ถ€๋ถ„์ด๋ฉฐ, ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•ด ๋ Œ๋”๋ง์„ ํ•ฉ๋‹ˆ๋‹ค. ๋ทฐ๋Š” JSP, JSF, PDF, XML๋“ฑ์œผ๋กœ ๊ฒฐ๊ณผ๋ฅผ ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค. Controller : ์ปจํŠธ๋กค๋Ÿฌ๋Š” ์‚ฌ์šฉ์ž์˜ ์•ก์…˜์— ์‘๋‹ตํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ์ž…๋‹ˆ๋‹ค. ์ปจํŠธ๋กค๋Ÿฌ๋Š” ๋ชจ๋ธ์„ ์—…๋ฐ์ดํŠธํ•˜๊ณ , ๋‹ค๋ฅธ ์•ก์…˜์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. MVC Model 1 ์•„ํ‚คํ…์ฒ˜ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์š”์ฒญ์„ ํ•˜๊ฒŒ..
3.3 Spring JDBC 1) Spring JDBC ์†Œ๊ฐœ Spring JDBC JDBC ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ๋ณด๋ฉด ๋ฐ˜๋ณต๋˜๋Š” ๊ฐœ๋ฐœ ์š”์†Œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฐ˜๋ณต์ ์ธ ์š”์†Œ๋Š” ๊ฐœ๋ฐœ์ž๋ฅผ ์ง€๋ฃจํ•˜๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๊ฐœ๋ฐœํ•˜๊ธฐ ์ง€๋ฃจํ•œ JDBC์˜ ๋ชจ๋“  ์ €์ˆ˜์ค€ ์„ธ๋ถ€์‚ฌํ•ญ์„ ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์ฒ˜๋ฆฌํ•ด์ค๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๋Š” ํ•„์š”ํ•œ ๋ถ€๋ถ„๋งŒ ๊ฐœ๋ฐœํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. Spring JDBC - ๊ฐœ๋ฐœ์ž๊ฐ€ ํ•ด์•ผ ํ•  ์ผ์€? Spring JDBC ํŒจํ‚ค์ง€ org.springframework.jdbc.core JdbcTemplate ๋ฐ ๊ด€๋ จ Helper ๊ฐ์ฒด ์ œ๊ณต org.springframework.jdbc.datasource DataSource๋ฅผ ์‰ฝ๊ฒŒ ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•œ ์œ ํ‹ธ ํด๋ž˜์Šค, ํŠธ๋žœ์ ์…˜ ๋งค๋‹ˆ์ ธ ๋ฐ ๋‹ค์–‘ํ•œ DataSource ๊ตฌํ˜„์„ ์ œ๊ณต org.springframework.jdbc.object..
3.2 Spring Test 1) Test ๊ฐœ์š” 1. ํ…Œ์ŠคํŒ…์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€? ์š”๊ตฌํ•˜๋Š” ์ˆ˜์ค€์„ ๋งŒ์กฑํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ๊ฒฐํ•จ์„ ๋ฐœ๊ฒฌํ•˜๋Š” ๊ณผ์ •์ด๋ผ๊ณ  ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ „ํ†ต์ ์ธ ํ…Œ์ŠคํŒ… ๊ฐœ๋…์€ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ๋˜๋Š” ์‹œ์Šคํ…œ์ด ์ž˜ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ˜„์žฌ์˜ ํ…Œ์ŠคํŒ… ๊ฐœ๋…์€ ์‚ฌ์šฉ์ž์˜ ๊ธฐ๋Œ€ ์ˆ˜์ค€๊ณผ ์š”๊ตฌ ์‚ฌํ•ญ์— ๋งž๊ฒŒ ๊ตฌํ˜„๋˜๊ณ  ๋™์ž‘ํ•˜๋Š”์ง€๋ฅผ ํ™•์ธํ•˜๊ณ  ์ด๋ฅผ ํ†ตํ•ด ๊ฒฐํ•จ์„ ๋ฐœ๊ฒฌํ•˜๊ณ , ์ตœ์ข…์ ์œผ๋กœ ๊ฒฐํ•จ ๋ฐ์ดํ„ฐ๋ฅผ ๊ทผ๊ฐ„์œผ๋กœ ๊ฐœ๋ฐœ ํ”„๋กœ์ ํŠธ์˜ ๋ฆฌ์Šคํฌ(Risk)์— ๋Œ€ํ•œ ์ˆ˜์น˜์ ์ธ ํŒ๋‹จ ๊ทผ๊ฑฐ๋ฅผ ์˜์‚ฌ ๊ฒฐ์ •๊ถŒ์ž(ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ์ž ๋“ฑ)์—๊ฒŒ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ์„ ๋งํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ ํ”„๋กœ์ ํŠธ ์ดˆ๊ธฐ์— ๊ฐœ๋ฐœ ์ค‘๊ฐ„ ์‚ฐ์ถœ๋ฌผ(Work products)์„ ํ…Œ์ŠคํŒ… ๊ด€์ ์—์„œ ๋ฆฌ๋ทฐ(Review)ํ•˜๊ณ , ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ๋ฏธ๋ฆฌ ๋งŒ๋“œ๋Š” ๊ณผ์ •์—์„œ ๊ฒฐํ•จ์„ ๋ฐœ๊ฒฌํ•˜๋Š” ์ž‘์—…(๊ฒฐํ•จ ์˜ˆ๋ฐฉ ํ™œ๋™)๋„ ํ…Œ์ŠคํŒ… ํ™œ๋™์˜ ์ค‘์š”ํ•œ ๋ถ€..
3.1 Spring Core ๋ชจ๋“  ์‹ค์Šต ์ฝ”๋“œ(+์ฃผ์„) ๋งํฌ: ํ”„๋กœ์ ํŠธ๋ช…: diexam01 1) Spring์ด๋ž€? Spring Framework๋ž€? ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ๊ธ‰ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ€๋ฒผ์šด ์†”๋ฃจ์…˜์ด์ž, ์›์Šค-์Šคํƒ‘-์ˆ(One-Stop-Shop) ์›ํ•˜๋Š” ๋ถ€๋ถ„๋งŒ ๊ฐ€์ ธ๋‹ค ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ชจ๋“ˆํ™”๊ฐ€ ์ž˜ ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. IoC ์ปจํ…Œ์ด๋„ˆ์ž…๋‹ˆ๋‹ค. ์„ ์–ธ์ ์œผ๋กœ ํŠธ๋žœ์žญ์…˜์„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์™„์ „ํ•œ ๊ธฐ๋Šฅ์„ ๊ฐ–์ถ˜ MVC Framework๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. AOP ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์Šคํ”„๋ง์€ ๋„๋ฉ”์ธ ๋…ผ๋ฆฌ ์ฝ”๋“œ์™€ ์‰ฝ๊ฒŒ ๋ถ„๋ฆฌ๋  ์ˆ˜ ์žˆ๋Š” ๊ตฌ์กฐ๋กœ ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ํ”„๋ ˆ์ž„ ์›Œํฌ ๋ชจ๋“ˆ ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ์•ฝ 20๊ฐœ์˜ ๋ชจ๋“ˆ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ๋ชจ๋“ˆ๋งŒ ๊ฐ€์ ธ๋‹ค ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. AOP์™€ ์ธ์ŠคํŠธ๋ฃจ๋ฉ˜ํ…Œ์ด์…˜ (Instrumentation) spring-AOP : A..
2.6 JSTL & EL 1) EL(Expression Language) ํ‘œํ˜„ ์–ธ์–ด์˜ ๊ธฐ๋ณธ ๊ฐ์ฒด ์‚ฌ์šฉ ์˜ˆ ํ‘œํ˜„ ์–ธ์–ด์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž… ๋ถˆ๋ฆฌ์–ธ ํƒ€์ž… - true์™€ false ์ •์ˆ˜ํƒ€์ž… - 0~9๋กœ ์ด๋ฃจ์–ด์ง„ ์ •์ˆ˜ ๊ฐ’ ์Œ์ˆ˜์˜ ๊ฒฝ์šฐ '-'๊ฐ€ ๋ถ™์Œ ์‹ค์ˆ˜ํƒ€์ž… - 0~9๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์œผ๋ฉฐ, ์†Œ์ˆ˜์ ('.')์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ณ , 3.24e3๊ณผ ๊ฐ™์ด ์ง€์ˆ˜ํ˜•์œผ๋กœ ํ‘œํ˜„ ๊ฐ€๋Šฅํ•˜๋‹ค. ๋ฌธ์ž์—ด ํƒ€์ž… - ๋”ฐ์˜ดํ‘œ( ' ๋˜๋Š”" )๋กœ ๋‘˜๋Ÿฌ์‹ผ ๋ฌธ์ž์—ด. ๋งŒ์•ฝ ์ž‘์€ ๋”ฐ์˜ดํ‘œ(')๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํ‘œํ˜„ํ•  ๊ฒฝ์šฐ ๊ฐ’์— ํฌํ•จ๋œ ์ž‘์€ ๋”ฐ์˜ดํ‘œ๋Š” \' ์™€ ๊ฐ™์ด \ ๊ธฐํ˜ธ์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. \ ๊ธฐํ˜ธ ์ž์ฒด๋Š” \\ ๋กœ ํ‘œ์‹œํ•œ๋‹ค. ๋„ ํƒ€์ž… - null ๊ฐ์ฒด ์ ‘๊ทผ ๊ทœ์น™ ํ‘œํ˜„ 1์ด๋‚˜ ํ‘œํ˜„ 2๊ฐ€ null์ด๋ฉด null์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ํ‘œํ˜„1์ด Map์ผ ๊ฒฝ์šฐ ํ‘œํ˜„2๋ฅผ key๋กœํ•œ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ํ‘œํ˜„1์ด Lis..
2.5 Scope 1) scope๋ž€? 4๊ฐ€์ง€ Scope page : ํŽ˜์ด์ง€ ๋‚ด์—์„œ ์ง€์—ญ๋ณ€์ˆ˜์ฒ˜๋Ÿผ ์‚ฌ์šฉ pageContext (์˜ˆ์‹œ ใ…‡) Request : http์š”์ฒญ์„ WAS๊ฐ€ ๋ฐ›์•„์„œ ์›น ๋ธŒ๋ผ์šฐ์ €์—๊ฒŒ ์‘๋‹ตํ•  ๋•Œ๊นŒ์ง€ ๋ณ€์ˆ˜๊ฐ€ ์œ ์ง€๋˜๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉ ํ•˜๋‚˜์˜ ์š”์ฒญ์ด ๋“ค์–ด์™€์„œ ์‘๋‹ต์ด ๋‚˜๊ฐˆ ๋•Œ๊นŒ์ง€ HttpServletRequest Session : ์›น ๋ธŒ๋ผ์šฐ์ € ๋ณ„๋กœ ๋ณ€์ˆ˜๊ฐ€ ๊ด€๋ฆฌ๋˜๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉ session ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋˜์–ด ์†Œ๋ฉธ๋  ๋•Œ๊นŒ์ง€ (์š”์ฒญ์ด ํ•˜๋‚˜๊ฐ€ ์•„๋‹ˆ๋ผ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์š”์ฒญ์ด ๋“ค์–ด์™€๋„ ๊ณ„์† ๋‚จ์•„์žˆ๋Š”) ์ƒํƒœ์œ ์ง€๋ฅผ ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” scope, HttpSession Application : ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์‹œ์ž‘๋˜๊ณ  ์ข…๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๋ณ€์ˆ˜๊ฐ€ ์œ ์ง€๋˜๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉ ํ•˜๋‚˜์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ƒ์„ฑ๋˜์–ด ์ด๊ฒŒ ์†Œ๋ฉธ๋  ๋•Œ๊นŒ์ง€ ServletContext (์˜ˆ์‹œ ใ…‡..
2.4 JSP 1) JSP๋ž€? ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•  ๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉ jsp๋Š” ์ž์ฒด๊ฐ€ ๋™์ž‘ํ•˜๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ ๋ชจ๋“  jsp ์„œ๋ธ”๋ฆฟ์œผ๋กœ ๋ฐ”๋€Œ์–ด์„œ ๋™์ž‘ํ•ด์š” jsp๋Š” WebContent ์•ˆ์— ์žˆ์Œ. ์•ˆ์— ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋งŒ๋“ค์–ด๋„ ๋˜๊ณ . ๋งจ ์œ„ ์ง€์‹œ๋ฌธ, ์ด๋Ÿฐ ์ง€์‹œ๋ฅผ ๋“ฃ๋Š” ๊ฒƒ์€ JSP๋ฅผ ์‹คํ–‰ํ•˜๋Š” WAS ๋ฐ‘ ๊บฝ์‡  ์•ˆ ์ž๋ฐ” ์ฝ”๋“œ 1๋ถ€ํ„ฐ 10๊นŒ์ง€์˜ ํ•ฉ : JSP ๋“ฑ์žฅ ๋ฐฐ๊ฒฝ ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ์—์„œ ASP(Active Server Page)๋ผ๋Š” ์‰ฝ๊ฒŒ ์›น์„ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๋Š” ์Šคํฌ๋ฆฝํŠธ(script) ์—”์ง„์„ ๋ฐœํ‘œํ•จ (1998๋…„) 1997๋…„์— ๋ฐœํ‘œ๋œ ์„œ๋ธ”๋ฆฟ์€ ASP์— ๋น„ํ•˜์—ฌ ์ƒ๋Œ€์ ์œผ๋กœ ๊ฐœ๋ฐœ ๋ฐฉ์‹์ด ๋ถˆํŽธํ•จ ASP์— ๋Œ€ํ•ญํ•˜๊ธฐ ์œ„ํ•˜์—ฌ 1999๋…„ ์ฌ๋งˆ์ดํฌ๋กœ์‹œ์Šคํ…œ์ฆˆ์—์„œ JSP๋ฅผ ๋ฐœํ‘œ JSP๋Š” ์‹ค์ œ๋กœ ์„œ๋ธ”๋ฆฟ ๊ธฐ์ˆ ์„ ์‚ฌ์šฉ ํ•ญ์ƒ jsp ๋Š” ์„œ๋ธ”๋ฆฟ์œผ๋กœ ๋ฐ”๋€Œ๊ณ  ์ด ๋ฐ”๋€ ์„œ๋ธ”๋ฆฟ์ด ์‹คํ–‰๋˜๋Š” ..
2.3 Servlet 1) Servlet ์ด๋ž€? dynamic web ์˜ค๋ฅ˜ https://skypotato-note.tistory.com/136 https://stackoverflow.com/questions/4119448/the-import-javax-servlet-cant-be-resolved ์ž๋ฐ” ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜(Java Web Application) WAS์— ์„ค์น˜(deploy)๋˜์–ด ๋™์ž‘ํ•˜๋Š” ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์ž…๋‹ˆ๋‹ค. ์ž๋ฐ” ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์—๋Š” HTML, CSS, ์ด๋ฏธ์ง€, ์ž๋ฐ”๋กœ ์ž‘์„ฑ๋œ ํด๋ž˜์Šค(Servlet๋„ ํฌํ•จ๋จ, package, ์ธํ„ฐํŽ˜์ด์Šค ๋“ฑ), ๊ฐ์ข… ์„ค์ • ํŒŒ์ผ ๋“ฑ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ์ž๋ฐ” ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํด๋” ๊ตฌ์กฐ web.xml ํŒŒ์ผ ์ค‘์š”ํ•˜๋‹ค ์ •๋„ ์„œ๋ธ”๋ฆฟ์ด๋ž€? ์ž๋ฐ” ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ตฌ์„ฑ์š”์†Œ ์ค‘ ๋™์ ์ธ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์˜..
2.2 ์›น ๊ฐœ๋ฐœํ™˜๊ฒฝ ์„ค์ • 1) Tomcat ๋‹ค์šด๋ฐ›๊ธฐ ๋ฐ ์„ค์น˜ํ•˜๊ธฐ Apache Tomcat์ด๋ž€? ์•„ํŒŒ์น˜ ํ†ฐ์บฃ(Apache Tomcat)์€ ์•„ํŒŒ์น˜ ์†Œํ”„ํŠธ์›จ์–ด ์žฌ๋‹จ(Apache Software Foundation, ASF)์—์„œ ๊ฐœ๋ฐœํ•œ ์„ธ๊ณ„์—์„œ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” WAS(Web Application Server)์ž…๋‹ˆ๋‹ค. ์ปดํ“จํ„ฐ์— ์šด์˜์ฒด์ œ๋ฅผ ์„ค์น˜ํ•ด์•ผ๋งŒ ์ปดํ“จํ„ฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ, ์ž๋ฐ”๋ฅผ ์ด์šฉํ•˜์—ฌ ์ž‘์„ฑ๋œ ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์€ WAS๊ฐ€ ์žˆ์–ด์•ผ๋งŒ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋•Œ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” WAS๊ฐ€ ์•„ํŒŒ์น˜ ํ†ฐ์บฃ์ด๋ผ๊ณ  ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„ํŒŒ์น˜ ํ†ฐ์บฃ์€ ์˜คํ”ˆ์†Œ์Šค ์†Œํ”„ํŠธ ์›จ์–ด๋กœ์จ ๋ˆ„๊ตฌ๋‚˜ ๋ฌด๋ฃŒ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฐธ๊ณ ๋กœ Tomcat์€ '์ˆ˜๊ณ ์–‘์ด'๋ฅผ ๋œปํ•ฉ๋‹ˆ๋‹ค. ํ†ฐ๊ณผ ์ œ๋ฆฌ์˜ ํ†ฐ์ด ์ƒ๊ฐ๋‚˜๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค. Tomcat 8๋ฒ„์ „์€ JDK 7์ด์ƒ์—์„œ ๋™์ž‘ํ•˜๋ฉฐ..
2.1 Web๊ฐœ๋ฐœ์˜ ์ดํ•ด 1) ์›น ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์œ„ํ•œ ํ”„๋กœ๊ทธ๋žจ ์–ธ์–ด๋“ค ์ €๊ธ‰ ์–ธ์–ด ์ €๊ธ‰ ์–ธ์–ด๋Š” ๊ธฐ๊ณ„ ์ค‘์‹ฌ์˜ ์–ธ์–ด๋ผ๊ณ  ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๊ณ„๊ฐ€ ์ง์ ‘ ์•Œ์•„๋“ค์„ ์ˆ˜ ์žˆ๋Š” ๋ง๋กœ 'ํ”„๋กœ๊ทธ๋žจ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•œ๋‹ค'๊ณ  ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ปดํ“จํ„ฐ๋Š” ์ „๊ธฐ๋กœ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์ „๊ธฐ์‹ ํ˜ธ์ธ ์ผœ์กŒ๋‹ค(on)์™€ ๊บผ์กŒ๋‹ค(off) 2๊ฐ€์ง€ ์ƒํƒœ ๊ฐ’์œผ๋กœ ๋™์ž‘ํ•œ๋‹ค๊ณ  ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณดํ†ต ์ˆซ์ž๋กœ ํ‘œํ˜„ํ•˜๋ฉด ์ผœ์กŒ๋‹ค๋Š” 1, ๊บผ์กŒ๋‹ค๋Š” 0์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. 0๊ณผ 1๋กœ ํ‘œํ˜„๋˜๋Š” ์ˆซ์ž๋ฅผ ์šฐ๋ฆฌ๋Š” 2์ง„์ˆ˜๋ผ๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค. 2์ง„์ˆ˜๋กœ ์ด๋ค„์ง„ ๊ฐ’์œผ๋กœ ์ž‘์„ฑํ•˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ๊ธฐ๊ณ„์–ด(Machine Language)๋ผ๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค. ์ˆซ์ž๋กœ๋งŒ ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์œ ์ง€๋ณด์ˆ˜๋„ ๊ต‰์žฅํžˆ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ์ˆซ์ž๋กœ๋งŒ ๋œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋Š” ์‚ฌ์šฉ์ด ๊ต‰์žฅํžˆ ์–ด๋ ค์› ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ, ์ด ์ˆซ์ž๋กœ ๋œ ๋ฌธ์žฅ๊ณผ 1:1๋กœ ๋Œ€์‘ํ•˜๋Š” ๊ธฐํ˜ธ๋ฅผ..