[Spring] - ๐ŸŒฑ MVC Framework๋ž€?

army246ยท2022๋…„ 6์›” 23์ผ
0

Spring

๋ชฉ๋ก ๋ณด๊ธฐ
6/7

MVC ๊ตฌ์กฐ

MVC ์ฃผ์ฒด

  • Model : ํ”„๋กœ๊ทธ๋žจ์˜ ๋‚ด๋ถ€ ์ƒํƒœ, ์ฆ‰ ํ”„๋กœ๊ทธ๋žจ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋งํ•œ๋‹ค.
  • View: ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค ์š”์†Œ๋ฅผ ๋งํ•˜๋ฉฐ ์œ ์ €์—๊ฒŒ ๋ณด์—ฌ์ง€๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค.
  • Controller : ๋ฐ์ดํ„ฐ์™€ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ๊ฐ„์˜ ์ƒํ˜ธ ์ž‘์šฉ์„ ๋œปํ•œ๋‹ค.(๋ชจ๋ธ๊ณผ ๋ทฐ ํ†ต์ œ; ์ค‘์žฌ์ž ์—ญํ• )

MVC ํŒจํ„ด์€ Model1 ๊ณผ Model2 ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค.

Model1

  • JSP๋กœ ๊ตฌํ˜„ํ•œ ๊ธฐ์กด ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์€ model1 ๊ตฌ์กฐ์ด๋‹ค. ์›น ๋ธŒ๋ผ์šฐ์ €์˜ ์š”์ฒญ์„ JSP๊ฐ€ ๋ฐ›์•„์„œ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ตฌ์กฐ์ด๋‹ค.
  • JSP ํŽ˜์ด์ง€ ์•ˆ์—์„œ ๋ชจ๋“  ์ •๋ณด๋ฅผ ํ‘œํ˜„(view)ํ•˜๊ณ  ์ €์žฅ(model)ํ•˜๊ณ  ์ฒ˜๋ฆฌ(controller)๋˜๊ธฐ๋•Œ๋ฌธ์— ์žฌ์‚ฌ์šฉ์ด ์–ด๋ ต๊ณ  ๊ฐ€๋…์„ฑ์ด ๋–จ์–ด์ง„๋‹ค.

    ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ๊ณผ ์‘๋‹ต์„ JSP๊ฐ€ ๋‹ด๋‹นํ•˜๋Š” ๊ตฌ์กฐ

Model2

  • model1 ๊ตฌ์กฐ์™€ ๋‹ค๋ฅด๊ฒŒ ์›น ๋ธŒ๋ผ์šฐ์ €์˜ ์š”์ฒญ์„ ํ•˜๋‚˜์˜ ์„œ๋ธ”๋ฆฟ์ด ๋ฐ›๋Š”๋‹ค.
  • ์„œ๋ธ”๋ฆฟ์€ ์›น ๋ธŒ๋ผ์šฐ์ €์˜ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•œ ํ›„ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ JSP ํŽ˜์ด์ง€์— ํฌ์›Œ๋”ฉํ•ด์ค€๋‹ค.

    ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ,์‘๋‹ต,๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ์ฒ˜๋ฆฌํ•˜๋Š” ๋ถ€๋ถ„์„ ๋ชจ๋“ˆํ™”์‹œํ‚จ ๊ตฌ์กฐ

Spring MVC

  • model2 + Spring ํ”„๋ ˆ์ž„์›Œํฌ

    ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ, ์Šคํ”„๋ง์ด ์ œ๊ณตํ•˜๋Š” ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ, DI, AOP, ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‰ฝ๊ฒŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

MVC ์ฒ˜๋ฆฌ ์ˆœ์„œ

  • ๋‹ค๋ฅธ MVC ํ”„๋ ˆ์ž„์›Œํฌ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ controller๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•œ๋‹ค.
  • Spring์—์„œ๋Š” DispatcherServlet์ด MVC์—์„œ์˜ Controller ๋ถ€๋ถ„์„ ์ฒ˜๋ฆฌํ•œ๋‹ค.
  1. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์— ์š”์ฒญ ํ•˜๋ฉด DispatcherServlet ํด๋ž˜์Šค๊ฐ€ ์š”์ฒญ์„ ๋ฐ›๋Š”๋‹ค.

    DispatcherServlet (front Controller) = web.xml

  2. DispatcherServlet์€ ํ”„๋กœ์ ํŠธ ํŒŒ์ผ ๋‚ด servlet-context.xml ํŒŒ์ผ์˜ @Controller ๋ฅผ ํ†ตํ•ด ๋“ฑ๋กํ•œ ์š”์ฒญ์„ ์œ„์ž„ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ์ฐพ์•„์„œ mapping ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ์กด์žฌํ•œ๋‹ค๋ฉด @RequestMapping์„ ํ†ตํ•ด์„œ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ๋ฉ”์†Œ๋“œ๋กœ ์ด๋™ํ•œ๋‹ค.

    ๊ธฐ์กด์—๋Š” @WebServlet์—์„œ urlPattern์„ ์‚ฌ์šฉํ•ด์ฃผ๊ณ  Component์— ๋นˆ ์ด๋ฆ„์œผ๋กœ URL์„ ์ž‘์„ฑํ–ˆ์ง€๋งŒ
    @RequestMapping๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํŽธ๋ฆฌํ•˜๊ฒŒ Controller ๊ตฌํ˜„์ด ๊ฐ€๋Šฅํ•ด์กŒ๋‹ค.

  3. Controller๋Š” ํ•ด๋‹น ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  Service๋ฅผ ๋ฐ›์•„์„œ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์„œ๋น„์Šค์— ์œ„์ž„ํ•œ๋‹ค.

  4. Service๋Š” ์š”์ฒญ์— ํ•„์š”ํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ณ , ์š”์ฒญ์— ๋Œ€ํ•ด DB์— ์ ‘๊ทผํ•ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ DAO์— ์š”์ฒญํ•˜์—ฌ ์ฒ˜๋ฆฌ๋ฅผ ์œ„์ž„ํ•œ๋‹ค.

  5. DAO๋Š” DB์ •๋ณด๋ฅผ Service์— ์ „๋‹ฌํ•œ๋‹ค.

  6. Service๋Š” ์ „๋‹ฌ๋ฐ›์€ ๋ฐ์ดํ„ฐ๋ฅผ Controller์— ์ „๋‹ฌํ•œ๋‹ค.

  7. Controller๋Š” Model ๊ฐ์ฒด์—๊ฒŒ ์š”์ฒญ์— ๋งž๋Š” View ์ •๋ณด๋ฅผ ๋‹ด์•„์„œ DispatcerServlet์— ์ „์†กํ•œ๋‹ค.

  8. DispatcerServlet์€ ViewResolver์—๊ฒŒ ์ „๋‹ฌ๋ฐ›์€ View ์ •๋ณด๋ฅผ ์ „๋‹ฌํ•œ๋‹ค.

  9. ViewResolver๋Š” ์‘๋‹ตํ•  View์— ๋Œ€ํ•œ JSP๋ฅผ ์ฐพ์•„์„œ DispatcherServlet์— ์ „๋‹ฌํ•œ๋‹ค.

  10. DispatcerServlet์€ ์‘๋‹ตํ•  View์˜ Render๋ฅผ ์ง€์‹œํ•˜๊ณ  View๋Š” ๋กœ์ง์„ ์ฒ˜๋ฆฌํ•œ๋‹ค.

  11. DispatcerServlet์€ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ Rendering๋œ View๋ฅผ ์‘๋‹ตํ•˜๋ฉด์„œ ์š”์ฒญ์ฒ˜๋ฆฌ๋ฅผ ๋งˆ๋ฌด๋ฆฌํ•œ๋‹ค.

  • @Controller
    - ์Šคํ”„๋ง์ด ์ž๋™์œผ๋กœ ์Šคํ”„๋ง ๋นˆ์œผ๋กœ ๋“ฑ๋กํ•œ๋‹ค.
    - ์Šคํ”„๋ง MVC์—์„œ ์–ด๋…ธํ…Œ์ด์…˜ ๊ธฐ๋ฐ˜ Controller๋กœ ์ธ์‹
  • @RequestMapping
    - ์š”์ฒญ ์ •๋ณด๋ฅผ ๋งคํ•‘, ํ•ด๋‹น URL์ด ํ˜ธ์ถœ๋˜๋ฉด ์ด ๋ฉ”์†Œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋œ๋‹ค.
  • ModelAndView
    • ๋ชจ๋ธ๊ณผ ๋ทฐ ์ •๋ณด๋ฅผ ๋‹ด์•„์„œ ๋ฐ˜ํ™˜

์ฐธ๊ณ 
์ด๋ฏธ์ง€ ์ถœ์ฒ˜
https://nickjoit.tistory.com/9
https://velog.io/@alghrksl/Spring-MVC1-MVC2-SpringMVC-%EC%B0%A8%EC%9D%B4%EC%A0%90%EA%B3%BC-%EA%B5%AC%EC%A1%B0
https://iri-kang.tistory.com/4ใ…‘

profile
์ฒœ์ฒœํžˆ ๊พธ์ค€ํžˆ

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