๐ŸŒฑSpring MVC

Dohyeon Kongยท2023๋…„ 10์›” 31์ผ
0

Spring๐ŸŒฑ

๋ชฉ๋ก ๋ณด๊ธฐ
5/11
post-thumbnail

MVC ๋ชจ๋ธ

MVC ๋ชจ๋ธ์ด๋ž€?? 'ํ”„๋กœ๊ทธ๋žจ์˜ ์ฒ˜๋ฆฌ ์—ญํ• ์„ ๋‚˜๋ˆ„์–ด์„œ ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์˜๋ฏธํ•œ๋‹ค.


MVC๋ชจ๋ธ์˜ ๊ตฌ์„ฑ

  • ๋ชจ๋ธ(Model)
  • ๋ทฐ(View)
  • ์ปจํŠธ๋กค๋Ÿฌ(Controller)

๋ชจ๋ธ(Model: M)

Model์€ ์‹œ์Šคํ…œ์—์„œ ์ œ๊ณตํ•˜๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง(Business Logic)์˜ ์ฒ˜๋ฆฌ ๋‚ด์šฉ์„ ์ž‘์„ฑํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.

'๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง'์ด๋ž€ '์‹œ์Šคํ…œ์˜ ๋ชฉ์ ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ถ€๋ถ„', ์‹œ์Šคํ…œ์˜ ์ฝ”์–ด ๋ถ€๋ถ„'์„ ์˜๋ฏธํ•œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ํšŒ์› ๊ฐ€์ž… ์‹œ ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ID ์ค‘๋ณต ํ™•์ธ, ๋ณธ์ธ ์ธ์ฆ, ๋น„๋ฐ€๋ฒˆํ˜ธ ๊ทœ์น™ ํ™•์ธ ๋“ฑ์ด ํ•„์š”ํ•˜๋‹ค. ์ด ์ค‘์—์„œ ID ์ค‘๋ณต ํ™•์ธ์˜ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์ƒ๊ฐํ•ด ๋ณด๋ฉด ์šฐ์„  ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ID ๊ฐ’์„ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•˜๊ณ  ํšŒ์› ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๊ฐ™์€ ID๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ์ค‘๋ณต ์—ฌ๋ถ€๋ฅผ ํ™”๋ฉด์— ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ๊ฒŒ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ๊นŒ์ง€์˜ ๊ณผ์ •์ด ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์ด ๋œ๋‹ค.

๋ทฐ(View, V)

View๋Š” ์‚ฌ์šฉ์ž ์ž…๋ ฅ๊ณผ ๊ฒฐ๊ณผ ์ถœ๋ ฅ ๋“ฑ ์‹œ์Šคํ…œ์—์„œ ํ‘œํ˜„ ๋ถ€๋ถ„์„ ๋‹ด๋‹นํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.

์ปจํŠธ๋กค๋Ÿฌ(Controller, C)

Controller๋Š” ์„œ๋น„์Šค ์ฒ˜๋ฆฌ๋ฅผ ๋‹ด๋‹นํ•˜๋Š” ๋ชจ๋ธ๊ณผ ํ™”๋ฉด ํ‘œ์‹œ๊ฐ€ ๋‹ด๋‹นํ•˜๋Š” ๋ทฐ๋ฅผ ์ œ์–ดํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.

์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ๋‚ด์šฉ์„ View์—์„œ ๋ฐ›๊ณ , ๋ฐ›์€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ์ค€์œผ๋กœ Model์— ๋‚ด์šฉ์„ ์ „๋‹ฌํ•œ๋‹ค. ๋˜ Model์—์„œ ๋ฐ›์€ ๋ฐ์ดํ„ฐ๋ฅผ View์— ์ „๋‹ฌํ•ด์„œ ํ™”๋ฉด์— ํ‘œ์‹œํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.


MVC ๋ชจ๋ธ์˜ ๊ฐœ์š”์™€ ์ด์ 

  • ์—ญํ•  ๋ถ„๋‹ด์„ ํ†ตํ•ด ํšจ์œจ์ ์ธ ๊ฐœ๋ฐœ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ๊ฐœ๋ฐœํ•˜๋Š” ์—”์ง€๋‹ˆ์–ด์˜ ๋ถ„์—…ํ™”๊ฐ€ ์šฉ์ดํ•˜๋‹ค.
  • ์„ค๊ณ„ ๋ณ€๊ฒฝ์— ์œ ์—ฐํ•˜๊ฒŒ ๋Œ€์‘์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

์„œ๋น„์Šค ์ฒ˜๋ฆฌ ๋ชจ๋ธ(Model), ๋ณด๊ธฐ ๋ทฐ(View), ์ œ์–ด ์ปจํŠธ๋กค๋Ÿฌ(Controller)๋กœ ๋ถ„๋ฅ˜ํ•จ์œผ๋กœ์จ ํ”„๋กœ๊ทธ๋žจ์˜ ๋…๋ฆฝ์„ฑ์ด ๋†’์•„์ง€๊ณ  ์ด์™€ ๊ฐ™์€ ์ด์ ์„ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.


Spring MVC

Spring MVC๋Š” '์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ํ”„๋ ˆ์ž„์›Œํฌ'๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

Spring MVC๋Š” Design Pattern ์ค‘์— ํ•˜๋‚˜์ธ Front-Controller Pattern์„ ์‚ฌ์šฉํ•œ๋‹ค.

Front-Controller Pattern์€ ๋ชจ๋“  ์š”์ฒญ์„ ํ”„๋ŸฐํŠธ ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ๋ฐ›์•„, ๊ทธ ํ›„ ๋‹ด๋‹นํ•˜๋Š” ์ปจํŠธ๋กค๋กœ์— ์ ์ ˆํ•˜๊ฒŒ ํ• ๋‹นํ•˜๋Š” ์„ค๊ณ„ ํŒจํ„ด์„ ์˜๋ฏธํ•œ๋‹ค.

์Šคํ”„๋ง MVC์˜ ์ฃผ์š” ๊ธฐ๋Šฅ์œผ๋กœ ํ™”๋ฉด์ „ํ™˜์ด๋‚˜ ์‚ฌ์šฉ์ž๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๋ธŒ๋ผ์šฐ์ €์™€ ์„œ๋ฒ„ ๊ฐ„์˜ ์ž…์ถœ๋ ฅ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ์„ ๋‹จ์ˆœํ™”ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.


์Šคํ”„๋ง MVC์˜ ๊ตฌ์„ฑ ์š”์†Œ

๊ฐ์ฒด๊ธฐ๋Šฅ ๊ฐœ์š”
Dispatcher Servlet๋ชจ๋“  ์š”์ฒญ์„ ์ˆ˜์‹ ํ•˜๋Š” ํ”„๋ŸฐํŠธ ์ปจํŠธ๋กค๋Ÿฌ์ด๋‹ค.
Model์ปจํŠธ๋กค๋Ÿฌ์—์„œ ๋ทฐ์— ๋„˜๊ฒจ์ฃผ๋Š” ํ‘œ์‹œ์šฉ ๋ฐ์ดํ„ฐ ๋“ฑ์„ ์ €์žฅํ•˜๋Š” ๊ฐ์ฒด์ด๋‹ค.
(HttpServletRequest๋‚˜ HttpSession๊ณผ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค.
Controller์š”์ฒญ์— ๋Œ€์‘ํ•ด์„œ ์ฒ˜๋ฆฌํ•  ๋‚ด์šฉ์ด ์žˆ๋Š” ๊ณณ์ด๋‹ค.
์„œ๋น„์Šค ์ฒ˜๋ฆฌ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ‘์†ํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ทจ๋“œ๊ฐ€๊ฑฐ๋‚˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€๊ณตํ•˜๋Š” ๋“ฑ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์ž‘์—…์„ ์‹คํ–‰ํ•œ๋‹ค. (Spring MVC์™€ ๊ด€๊ณ„๊ฐ€ ์—†๋‹ค.
Viewํ™”๋ฉด ํ‘œ์‹œ ์ฒ˜๋ฆฌ๋ฅผ ํ•œ๋‹ค.(๊ตฌ์ฒด์ ์œผ๋กœ๋Š” JSP๋“ฑ์˜ ์ฒ˜๋ฆฌ)

Spring MVC ์ˆ˜ํ–‰ ํ๋ฆ„

์‚ฌ์ง„์„ ๋ณด๋ฉด์„œ ์ฐจ๊ทผํžˆ ์„ค๋ช…์„ ๋ณด์ž!!

  1. ํด๋ผ์ด์–ธํŠธ๋ถ€ํ„ฐ ๋“ค์–ด์˜ค๋Š” ๋ชจ๋“  ์š”์ฒญ์„ DispatcherServlet์ด ๋ฐ›๋Š”๋‹ค.
  2. DispatcherServlet์€ HandlerMapping์„ ํ†ตํ•ด์„œ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  Controller๋ฅผ ๊ฒ€์ƒ‰ํ•œ๋‹ค.
  3. DispatcherServlet์€ ๊ฒ€์ƒ‰๋œ Controller๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•œ๋‹ค.
  4. Controller๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์˜ ์ˆ˜ํ–‰ ๊ฒฐ๊ณผ๋กœ ์–ป์–ด๋‚ธ Model ์ •๋ณด์™€ Model์„ ๋ณด์—ฌ์ค„ View์ •๋ณด๋ฅผ ModelAndView ๊ฐ์ฒด์— ์ €์žฅํ•˜์—ฌ ๋ฆฌํ„ดํ•œ๋‹ค.
  5. DispatcherServlet์€ ViewResolver๋กœ๋ถ€ํ„ฐ View์ •๋ณด๋ฅผ ์ถ”์ถœํ•˜๊ณ , ViewResolver๋ฅผ ์ด์šฉํ•˜์—ฌ ์‘๋‹ต์œผ๋กœ ์‚ฌ์šฉํ•  View๋ฅผ ์–ป์–ด๋‚ธ๋‹ค.
  6. DispatcherServlet์€ ViewResolver๋ฅผ ํ†ตํ•ด ์ฐพ์•„๋‚ธ View๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์‚ฌ์šฉ์ž์—๊ฒŒ ์‘๋‹ต์„ ์ „์†กํ•œ๋‹ค.

Reference๐Ÿ“š

  • ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ ์ฒซ๊ฑธ์Œ - ํ›„๋ฃจ๋„ค์Šค ํ‚ค๋…ธ์‹œํƒ€ ๋งˆ์‚ฌ์•„ํ‚ค -
profile
ํ‹ฐ์Šคํ† ๋ฆฌ๋กœ ๊ธฐ์ˆ  ๋ธ”๋กœ๊ทธ ์ด์ „

0๊ฐœ์˜ ๋Œ“๊ธ€