** ๐Ÿ“Œ PART 0. ์ „์ฒด ๊ฐœ์š” ๋ฐ ๋ฉด์ ‘ ํ‚ค์›Œ๋“œ ์ •๋ฆฌ **


๐Ÿ”ท 1. MVC2์˜ ํƒ„์ƒ ๋ฐฐ๊ฒฝ: MVC1 โ†’ MVC2 ์ง„ํ™” ๊ณผ์ •

๐Ÿ’ฌ ๋ˆˆ๋†’์ด ์„ค๋ช…

๐Ÿ“Œ ํ•˜์ง€๋งŒ ์ด๋Ÿฐ ๊ตฌ์กฐ๋Š” ๋งˆ์น˜ ํ•œ ์‚ฌ๋žŒ์ด ํ˜ผ์ž ๋ชจ๋“  ์ผ์„ ๋‹ค ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์•„์„œ, ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์–ด๋ ต๊ณ , ์„ฑ๋Šฅ๋„ ์•ˆ ์ข‹์•„์กŒ์–ด.

๐Ÿง  ๊ณ ๊ธ‰ ๊ฐœ๋… ์ถ”๊ฐ€

โœ… ๊ทธ๋ž˜์„œ ๋“ฑ์žฅํ•œ ๊ตฌ์กฐ๊ฐ€ MVC2(Model2)!

โž• ์ด ๊ตฌ์กฐ๋ฅผ Model2 ๋˜๋Š” JSP MVC2 ๊ตฌ์กฐ๋ผ๊ณ  ๋ถˆ๋Ÿฌ.

โž• JSP๋Š” ์˜ค์ง ์ถœ๋ ฅ(View), Servlet์€ ์ œ์–ด(Control), ์ž๋ฐ” ํด๋ž˜์Šค๋Š” ๋ฐ์ดํ„ฐ(Model)๋ฅผ ๋‹ด๋‹น.


๐Ÿ”ท 2. JSP Model2 ๊ตฌ์กฐ ํ•ต์‹ฌ ์ปดํฌ๋„ŒํŠธ

๐Ÿ’ฌ ์‰ฝ๊ฒŒ ๋งํ•˜๋ฉด ์ด ์„ธ ๊ฐ€์ง€์•ผ:

๊ตฌ์„ฑ์š”์†Œ ํ•˜๋Š” ์ผ ์˜ˆ์‹œ
Model (๋ชจ๋ธ) ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๋‹ด๋‹น Member.java, BoardDao.java
View (๋ทฐ) ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์ด๋Š” ํ™”๋ฉด list.jsp, form.jsp
Controller (์ปจํŠธ๋กค๋Ÿฌ) ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์„ ๋ฐ›๊ณ  ๊ฒฐ๊ณผ๋ฅผ ์ „๋‹ฌ BoardController.java

๐Ÿง  ๊ณ ๊ธ‰ ๊ฐœ๋… ํ™•์žฅ


๐Ÿ”ท 3. ๋ฉ”๋ชจ๋ฆฌ & GC ๊ด€์ ์—์„œ์˜ MVC2 ๊ตฌ์กฐ ์ฒ ํ•™

๐Ÿ’ฌ ์‰ฝ๊ฒŒ ๋งํ•˜๋ฉด:

์˜ˆ์‹œ:

๐Ÿง  ๊ณ ๊ธ‰ ๋ฉด์ ‘ ๊ฐœ๋…:


๐Ÿ”ท 4. ๋ฉด์ ‘ ํ•ต์‹ฌ ํ‚ค์›Œ๋“œ ์ •๋ฆฌ

์šฉ์–ด ํ•œ๊ธ€ ํ’€์ด ์ฐจ์ด์  ๋ฐ ์‹ค๋ฌด ํฌ์ธํŠธ
Forward ๋‚ด๋ถ€ ์ด๋™ (๊ฐ™์€ ์„œ๋ฒ„ ์•ˆ์—์„œ ์ด๋™) ์ฃผ์†Œ์ฐฝ ๊ทธ๋Œ€๋กœ, RequestDispatcher.forward() ์‚ฌ์šฉ
Redirect ์™ธ๋ถ€ ์ด๋™ (๋‹ค๋ฅธ URL๋กœ ์žฌ์š”์ฒญ) ์ฃผ์†Œ์ฐฝ ๋ณ€๊ฒฝ, response.sendRedirect() ์‚ฌ์šฉ
RequestDispatcher ์š”์ฒญ์„ JSP๋‚˜ ๋‹ค๋ฅธ ์„œ๋ธ”๋ฆฟ์— ์ „๋‹ฌํ•˜๋Š” ๋„๊ตฌ Forward ์ „์šฉ, ์„œ๋ธ”๋ฆฟ/JSP ๊ฐ„ ์—ฐ๊ฒฐ ๋ธŒ๋ฆฟ์ง€
ServletContext ๋ชจ๋“  ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ณตํ†ต๋œ ์•ฑ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ „์—ญ ๋ฐ์ดํ„ฐ ์ €์žฅ (์˜ˆ: config ๊ฐ’)
RequestScope ํ•˜๋‚˜์˜ ์š”์ฒญ(request) ๋™์•ˆ๋งŒ ์œ ์ง€๋˜๋Š” ๋ฐ์ดํ„ฐ ์š”์ฒญ์ด ๋๋‚˜๋ฉด GC ๋Œ€์ƒ โ†’ ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„ ์ ์Œ

๐Ÿ’ก ๋ฉด์ ‘์—์„œ ๊ผญ ๋‚˜์˜ค๋Š” ์งˆ๋ฌธ ์˜ˆ์‹œ:

| ๊ตฌ๋ถ„ | Forward (ํฌ์›Œ๋“œ) | Redirect (๋ฆฌ๋‹ค์ด๋ ‰ํŠธ) | | โ€” | โ€” | โ€” | | ๐Ÿ”„ ์ž‘๋™ ๋ฐฉ์‹ | ์„œ๋ฒ„ ๋‚ด๋ถ€์—์„œ ๋‹ค๋ฅธ JSP/์„œ๋ธ”๋ฆฟ์œผ๋กœ ์ด๋™ | ๋ธŒ๋ผ์šฐ์ €์—๊ฒŒ ๋‹ค๋ฅธ URL๋กœ ์žฌ์š”์ฒญ ์‹œํ‚ด | | ๐Ÿ“ ์ฃผ์†Œ์ฐฝ | ์•ˆ ๋ฐ”๋€œ (์›๋ž˜ ์ฃผ์†Œ ์œ ์ง€) | ๋ฐ”๋€œ (์ด๋™ํ•œ ์ฃผ์†Œ๋กœ ๋ฐ”๋€œ) | | ๐Ÿ“ฆ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ | request ๊ฐ์ฒด๋กœ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ ๊ฐ€๋Šฅ | ์•ˆ ๋จ (์ƒˆ ์š”์ฒญ์ด๋ผ ์ด์ „ ๋ฐ์ดํ„ฐ ์†Œ๋ฉธ๋จ) | | ๐Ÿ”’ ๋ณด์•ˆ์„ฑ | ๋‚ด๋ถ€ ์ด๋™์ด๋ผ ์™ธ๋ถ€์—์„œ ์ง์ ‘ ์ ‘๊ทผ ๋ถˆ๊ฐ€ | ๋ˆ„๊ตฌ๋‚˜ ์ ‘๊ทผ ๊ฐ€๋Šฅ (์ฃผ์†Œ ๋…ธ์ถœ๋จ) | | ๐Ÿงช ์˜ˆ์‹œ | ๋กœ๊ทธ์ธ ์„ฑ๊ณต ํ›„ โ†’ main.jsp๋กœ ์ด๋™ | ๊ฒŒ์‹œ๊ธ€ ์ž‘์„ฑ ํ›„ โ†’ ๋ชฉ๋ก์œผ๋กœ ์ด๋™ |

| ๊ตฌ๋ถ„ | RequestScope | HttpSession | ServletContext | | โ€” | โ€” | โ€” | โ€” | | ๐Ÿ“ฆ ์ €์žฅ ๋Œ€์ƒ | 1๊ฐœ์˜ ์š”์ฒญ(request) ๋™์•ˆ ์œ ์ง€ | ๋ธŒ๋ผ์šฐ์ € 1๊ฐœ (์‚ฌ์šฉ์ž) ๊ธฐ์ค€์œผ๋กœ ์œ ์ง€ | ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ „์ฒด์— ๊ณต์œ  | | ๐Ÿ•’ ์œ ์ง€ ์‹œ๊ฐ„ | ์š”์ฒญ ์ฒ˜๋ฆฌ ์ค‘๋งŒ ์œ ํšจ | ๋ธŒ๋ผ์šฐ์ € ๋„๊ธฐ ์ „ or ํƒ€์ž„์•„์›ƒ ์ „๊นŒ์ง€ | ์„œ๋ฒ„๊ฐ€ ๊บผ์งˆ ๋•Œ๊นŒ์ง€ | | ๐Ÿ“ ์‚ฌ์šฉ ์œ„์น˜ | JSP/์„œ๋ธ”๋ฆฟ ๊ฐ„ ๋ฐ์ดํ„ฐ ๊ณต์œ  | ๋กœ๊ทธ์ธ ์‚ฌ์šฉ์ž ์ •๋ณด ์ €์žฅ | ์ „์ฒด ์‚ฌ์šฉ์ž ๊ณตํ†ต ์„ค์ •๊ฐ’ | | ๐Ÿงช ์˜ˆ์‹œ | ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ โ†’ ๊ฒฐ๊ณผ ํŽ˜์ด์ง€ ์ „๋‹ฌ | ๋กœ๊ทธ์ธ ID ์ €์žฅ | DB์ ‘์†์ •๋ณด ๋“ฑ ์ „์—ญ ์„ค์ •๊ฐ’ |


โœ… ์š”์•ฝ: ์™œ MVC2๊ฐ€ ์ข‹์€๊ฐ€?

ํ•ญ๋ชฉ MVC1 MVC2
์œ ์ง€๋ณด์ˆ˜ ์–ด๋ ต๋‹ค ์ข‹๋‹ค
์—ญํ• ๋ถ„๋‹ด ์—†์Œ ์žˆ์Œ (Model/View/Controller)
๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ ์ฝ”๋“œ ๋’ค์„ž์ž„ ๋ถ„๋ฆฌ๋˜์–ด GC ํšจ์œจโ†‘
์„ฑ๋Šฅ ์š”์ฒญ๋งˆ๋‹ค JSP ์ƒˆ๋กœ ์‹คํ–‰ ์ปจํŠธ๋กค๋Ÿฌ ์žฌ์‚ฌ์šฉ์œผ๋กœ ๋ถ€๋‹ดโ†“