๐Ÿ’Ž ์‚ผ์„ฑ์ฒญ๋…„SW์•„์นด๋ฐ๋ฏธ(SSAFY)/SSAFYcial (๊ธฐ์ž๋‹จ)

[์‹ธํ”ผ์—์„œ ๋ญํ–ˆ๋‹ˆ?] #Servlet #JSP #MVCPattern

ming412 2024. 3. 24. 16:57

์•ˆ๋…•ํ•˜์„ธ์š”~!! 11๊ธฐ ์ตœ๋ฏผ์ฃผ ๊ธฐ์ž์ž…๋‹ˆ๋‹ค ๐Ÿ‘‹

3์›”๋‹ฌ์—๋Š” ์›น ํ”„๋ก ํŠธ์—”๋“œ์™€ ๋ฐฑ์—”๋“œ์— ๋Œ€ํ•ด ํ•™์Šตํ–ˆ๋Š”๋ฐ์š”, ์นœ์ ˆํ•˜์‹  ํ•˜์ด์Œค์˜ ์„ค๋ช… ๋•๋ถ„์— ์ดํ•ด๊ฐ€ ์™์™ ๋˜์—ˆ๋‹ต๋‹ˆ๋‹ค!

 

๊ทธ ์ค‘์—์„œ๋„ ์ œ ๊ด€์‹ฌ์‚ฌ์ธ ์›น ๋ฐฑ์—”๋“œ ํ๋ฆ„์— ๋Œ€ํ•ด ๊ฐœ์ธ์ ์œผ๋กœ ์ •๋ฆฌํ•œ ๋‚ด์šฉ์„ ๊ฐ„๋‹จํžˆ ๊ณต์œ ๋“œ๋ฆฌ๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค! ๐Ÿ™Œ 

 

์›น์˜ ์—ญ์‚ฌ์™€ ํ๋ฆ„์— ๋”ฐ๋ผ ๊ฐ ๊ฐœ๋…์ด ๋“ฑ์žฅํ•œ ์ˆœ์„œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

`CGI -> Servlet -> JSP -> MVC Pattern`

 

CGI (Common Gateway Interface)

์˜ˆ์ „์˜ ์„œ๋ฒ„๋Š” ์ •์ ์ธ ํŽ˜์ด์ง€๋งŒ์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์—, ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์„ ๋ฐ›์•„ ์ •๋ณด๋ฅผ ๋™์ ์œผ๋กœ ์ƒ์„ฑํ•˜๊ณ  ์ด๋ฅผ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋‹ค์‹œ ๋ณด๋‚ด์ฃผ๋Š” ๊ฒƒ์ด ๋ถˆ๊ฐ€๋Šฅํ–ˆ์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์„œ๋ฒ„์—์„œ ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋žจ์„ ๋ถˆ๋Ÿฌ๋‚ด๊ณ  ๊ทธ ํ”„๋กœ๊ทธ๋žจ ์ฒ˜๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋‚ด์ค„ ์ˆ˜ ์žˆ๋Š” ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ํ•„์š”ํ–ˆ๋Š”๋ฐ, ์ด๊ฒƒ์ด ๋ฐ”๋กœ CGI์ž…๋‹ˆ๋‹ค.

CGI์˜ ๋“ฑ์žฅ์œผ๋กœ ์›น์„œ๋ฒ„๊ฐ€ ๋™์ ์ธ ํŽ˜์ด์ง€๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

 

CGI์˜ ํ•œ๊ณ„

ํ•˜์ง€๋งŒ CGI๋Š” ์š”์ฒญ์ด ์žˆ์„ ๋•Œ๋งˆ๋‹ค ์ƒˆ๋กœ์šด `ํ”„๋กœ์„ธ์Šค`๊ฐ€ ์ƒ์„ฑ๋˜์–ด ์‘๋‹ตํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์ด ๋งŽ์„ ๋•Œ ์„œ๋ฒ„์— ๋ถ€ํ•˜๊ฐ€ ํฌ๊ฒŒ ๊ฐ€๊ฒŒ ๋˜์—ˆ๊ณ , ํ”„๋กœ์„ธ์Šค๋ณด๋‹ค ๋” ์ž‘์€ ๋‹จ์œ„๋กœ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ด ํ•„์š”ํ–ˆ์Šต๋‹ˆ๋‹ค.

 

Servlet

์ด์— ๋”ฐ๋ผ ํ”„๋กœ์„ธ์Šค๋ณด๋‹ค ๋” ๊ฐ€๋ฒผ์šด `์Šค๋ ˆ๋“œ` ๋‹จ์œ„๋กœ ์‹คํ–‰ํ•˜์—ฌ ์„œ๋ฒ„ ๋ถ€ํ•˜๋ฅผ ์ค„์ด๊ณ  ์„ฑ๋Šฅ์„ ๊ฐœ์„ ํ•œ `Servlet`์ด ๋“ฑ์žฅํ–ˆ์Šต๋‹ˆ๋‹ค.

Servlet์€ ํ†ฐ์บฃ์ด ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ์ˆœ์ˆ˜ Java ์ฝ”๋“œ๋กœ๋งŒ ์ด๋ฃจ์–ด์ง„ ์›น์„œ๋ฒ„์šฉ ํด๋ž˜์Šค๋กœ, ์„œ๋ธ”๋ฆฟ์„ ์ด์šฉํ•˜๋ฉด ์›น ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. 

(์ž๋ฐ” ์ฝ”๋“œ ์•ˆ์— HTML ์ฝ”๋“œ๋ฅผ ํฌํ•จ)

 

Servlet์˜ LifeCycle

Servlet LifeCycle

 

1. ๋จผ์ € WAS๋Š” ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ ์„œ๋ธ”๋ฆฟ ์š”์ฒญ์„ ๋ฐ›์œผ๋ฉด ํ•ด๋‹น ์„œ๋ธ”๋ฆฟ์ด ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. 

2. (๋งŒ์•ฝ ํ•ด๋‹น ์„œ๋ธ”๋ฆฟ์ด ์ฒ˜์Œ์‹คํ–‰๋˜์–ด ๋ฉ”๋ชจ๋ฆฌ์— ์—†๋‹ค๋ฉด) ์„œ๋ธ”๋ฆฟ ํด๋ž˜์Šค๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ฆฌ๊ณ  `init()` ๋ฉ”์†Œ๋“œ์™€ `service()` ๋ฉ”์†Œ๋“œ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. 

3. (๋งŒ์•ฝ ํ•ด๋‹น ์„œ๋ธ”๋ฆฟ์ด ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ๋‹ค๋ฉด) service() ๋ฉ”์†Œ๋“œ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

4. WAS๊ฐ€ ์ข…๋ฃŒ๋˜๊ฑฐ๋‚˜ ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๊ฐฑ์‹ ๋˜์–ด ์„œ๋ธ”๋ฆฟ ์ข…๋ฃŒ ์š”์ฒญ์ด ์žˆ์„ ๊ฒฝ์šฐ `destroy()` ๋ฉ”์†Œ๋“œ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. 

 

Servlet์˜ ํ•œ๊ณ„

ํ•˜์ง€๋งŒ ์„œ๋ธ”๋ฆฟ์€ ํ™”๋ฉด ์ธํ„ฐํŽ˜์ด์Šค ๊ตฌํ˜„์— ๋„ˆ๋ฌด ๋งŽ์€ ์ฝ”๋“œ๋ฅผ ํ•„์š”๋กœ ํ•˜๋Š” ๋น„ํšจ์œจ์ ์ธ ์ธก๋ฉด์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ Java ํด๋ž˜์Šค์ด๊ธฐ ๋•Œ๋ฌธ์— ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ•ญ์ƒ ๋นŒ๋“œ๋ฅผ ๋‹ค์‹œ ํ•˜์—ฌ ํ™•์ธํ•ด์•ผ ํ•˜๋Š” ํ•œ๊ณ„๊นŒ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

 

JSP

์„œ๋ธ”๋ฆฟ์˜ ํ•œ๊ณ„๋ฅผ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด ๋“ฑ์žฅํ•œ ๊ฒƒ์ด `์„œ๋ธ”๋ฆฟ ๊ธฐ๋ฐ˜์˜ ์„œ๋ฒ„ ์Šคํฌ๋ฆฝํŠธ ๊ธฐ์ˆ `์ธ JSP์ž…๋‹ˆ๋‹ค.

(HTML ์ฝ”๋“œ ์•ˆ์— ์ž๋ฐ” ์ฝ”๋“œ๋ฅผ ํฌํ•จ)

 

์Šคํฌ๋ฆฝํŠธ ๊ธฐ์ˆ ์ด๋ž€ ASP, PHP ์ฒ˜๋Ÿผ ๋ฏธ๋ฆฌ ์•ฝ์†๋œ ๊ทœ์ •์— ๋”ฐ๋ผ ๊ฐ„๋‹จํ•œ ํ‚ค์›Œ๋“œ๋ฅผ ์กฐํ•ฉํ•˜์—ฌ ์ž…๋ ฅํ•˜๋ฉด,
์‹คํ–‰ ์‹œ์ ์— ๊ฐ๊ฐ์˜ ํ‚ค์›Œ๋“œ์— ๋งคํ•‘๋˜์–ด ์žˆ๋Š” ์–ด๋–ค ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜ ํ›„์— ์‹คํ–‰๋˜๋Š” ํ˜•ํƒœ์ž…๋‹ˆ๋‹ค.

 

JSP๊ฐ€ ์„œ๋ธ”๋ฆฟ์œผ๋กœ ๋ณ€ํ™˜๋˜์–ด ์‹คํ–‰๋˜๋Š” ๊ณผ์ •

 

์ผ๋ฐ˜์ ์œผ๋กœ ์ •์ ์ธ ํŽ˜์ด์ง€๋งŒ ์ œ๊ณตํ•˜๋Š” ์›น์„œ๋ฒ„๊ฐ€ ๋™์ ์ธ ํŽ˜์ด์ง€๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด CGI์ด๋ฉฐ,
๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์„œ๋ธ”๋ฆฟ๊ณผ JSP ๋ชจ๋‘ ๋™์  ํŽ˜์ด์ง€ ์ œ๊ณต์„ ๋•๋Š” ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์œผ๋กœ, CGI์˜ ๋ฒ”์ฃผ์— ๋“ ๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

JSP์˜ ํ•œ๊ณ„

JSP๋งŒ ์ด์šฉํ•œ ๊ฐœ๋ฐœ(Model 1)๋ฐฉ์‹์—์„œ๋Š” Client์˜ ์š”์ฒญ์— ๋Œ€ํ•œ Logic ์ฒ˜๋ฆฌ์™€ response page(view)์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ๋ฅผ ๋ชจ๋‘ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฐฉ์‹์œผ๋กœ ์ธํ•ด, ์ ์ฐจ ์œ ์ง€๋ณด์ˆ˜ ์ธก๋ฉด์˜ ํ•œ๊ณ„๋ฅผ ๋А๋ผ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

 

Model 1 ๊ตฌ์กฐ

 

MVC Pattern (Model 2)

์ดํ›„ ์„œ๋ธ”๋ฆฟ๊ณผ JSP๋ฅผ ๊ฐ๊ฐ Controller์™€ View์˜ ์—ญํ• ์„ ๋‚˜๋ˆ„์–ด ์‚ฌ์šฉํ•˜๋Š” ๊ฐœ๋ฐœ ๋ฐฉ์‹(Model 2)์ด ๋“ฑ์žฅํ–ˆ์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ JSP๋Š” response page(view)์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ๋งŒ ํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

 

Model 2 ๊ตฌ์กฐ

 

์˜ค๋Š˜์€ ์ž…๊ณผ ์„ธ ๋‹ฌ์ฐจ, ์‹ธํ”ผ์—์„œ ๋ฌด์—‡์„ ๋ฐฐ์› ๋Š”์ง€๋ฅผ ๋‹ค๋ค„๋ณด์•˜์Šต๋‹ˆ๋‹ค!

๊ทธ๋Ÿผ ๋‹ค์Œ์— ๋งŒ๋‚˜์š”-! ๐Ÿ‘‹