SpringFramework 03. Spring Web MVC - swkim0128/PARA GitHub Wiki


type: Spring archive: false

MVC(Model-View-Controller) Pattern


  • Model

    ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ƒํƒœ์˜ ์บก์Аํ™”

    ์ƒํƒœ ์ฟผ๋ฆฌ์— ๋Œ€ํ•œ ์‘๋‹ต

    ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ธฐ๋Šฅ ํ‘œํ˜„

    ๋ณ€๊ฒฝ์„ view์— ํ†ต์ง€

  • View

    ๋ชจ๋ธ์„ ํ™”๋ฉด์— ์‹œ์ž‘์ ์œผ๋กœ ํ‘œํ˜„

    ๋ชจ๋ธ์—๊ฒŒ ์—…๋ฐ์ดํŠธ ์š”์ฒญ

    ์‚ฌ์šฉ์ž์˜ ์ž…๋ ฅ์„ ์ปจํŠธ๋กค๋Ÿฌ์— ์ „๋‹ฌ

    ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ view๋ฅผ ์„ ํƒํ•˜๋„๋ก ํ—ˆ์šฉ

  • Controller

    ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํ–‰์œ„ ์ •์˜

    ์‚ฌ์šฉ์ž ์•ก์…˜์„ ๋ชจ๋ธ ์—…๋ฐ์ดํŠธ์™€ mapping

    ์‘๋‹ต์— ๋Œ€ํ•œ view ์„ ํƒ

์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํ™•์žฅ์„ ์œ„ํ•ด Model, View, Controller ์„ธ๊ฐ€์ง€ ์˜์—ญ์œผ๋กœ ๋ถ„๋ฆฌ

์ปดํฌ๋„ŒํŠธ์˜ ๋ณ€๊ฒฝ์ด ๋‹ค๋ฅธ ์˜์—ญ ์ปดํฌ๋„ŒํŠธ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š์Œ(์œ ์ง€๋ณด์ˆ˜ ์šฉ์ด)

์ปดํฌ๋„ŒํŠธ ๊ฐ„์˜ ๊ฒฐํ•ฉ์„ฑ์ด ๋‚ฎ์•„ ํ”„๋กœ๊ทธ๋žจ ์ˆ˜์ •์ด ์šฉ์ด(ํ™•์žฅ์„ฑ์ด ๋›ฐ์–ด๋‚จ)

  • ์žฅ์ 

    ํ™”๋ฉด๊ณผ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๋ถ„๋ฆฌํ•ด์„œ ์ž‘์—… ๊ฐ€๋Šฅ

    ์˜์—ญ๋ณ„ ๊ฐœ๋ฐœ๋กœ ์ธํ•˜์—ฌ ํ™•์žฅ์„ฑ์ด ๋›ฐ์–ด๋‚จ

    ํ‘œ์ค€ํ™”๋œ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ๊ณต๋™์ž‘์—…์ด ์šฉ์ดํ•˜๊ณ  ์œ ์ง€๋ณด์ˆ˜์„ฑ์ด ์ข‹์Œ

  • ๋‹จ์ 

    ๊ฐœ๋ฐœ๊ณผ์ •์ด ๋ณต์žกํ•ด ์ดˆ๊ธฐ ๊ฐœ๋ฐœ ์†๋„๊ฐ€ ๋Šฆ์Œ

    ์ดˆ๋ณด์ž๊ฐ€ ์ดํ•ดํ•˜๊ณ  ๊ฐœ๋ฐœํ•˜๊ธฐ์— ๋‹ค์†Œ ์–ด๋ ค์›€

Model2 (Web MVC) ์š”์ฒญ ํ๋ฆ„


!Untitled 65.png

Spring MVC


  • ํŠน์ง•

    Spring์€ DI๋‚˜ AOP๊ฐ™์€ ๊ธฐ๋Šฅ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, Servlet ๊ธฐ๋ฐ˜์˜ WEB ๊ฐœ๋ฐœ์„ ์œ„ํ•œ MVC Framework๋ฅผ ์ œ๊ณต

    Spring MVC๋Š” Model2 Architecture์™€ Front Controller Pattern์„ Framework์ฐจ์›์—์„œ ์ œ๊ณต

    Spring MVC Framework๋Š” Spring์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— Spring์ด ์ œ๊ณตํ•˜๋Š” Transaction ์ฒ˜๋ฆฌ๋‚˜ DI ๋ฐ AOP ๋“ฑ์„ ์†์‰ฝ๊ฒŒ ์‚ฌ์šฉ

  • Spring MVC ๊ตฌ์„ฑ์š”์†Œ

    !Untitled 1 42.png

    !Untitled 2 39.png

Spring MVC ์š”์ฒญ ํ๋ฆ„


!Untitled 3 38.png

Spring MVC


!Untitled 4 34.png

!Untitled 5 30.png

Spring MVC ๊ตฌํ˜„


  • Spring MVC๋ฅผ ์ด์šฉํ•œ Application ๊ตฌํ˜„ Step

    web.xml์— DispatcherServlet ๋“ฑ๋ก ๋ฐ Spring ์„ค์ •ํŒŒ์ผ ๋“ฑ๋ก

    ์„ค์ • ํŒŒ์ผ์— HandlerMapping ์„ค์ •

    Controller ๊ตฌํ˜„ ๋ฐ Context ์„ค์ • ํŒŒ์ผ(servlet-context.xml)์— ๋“ฑ๋ก

    Controller์™€ JSP์˜ ์—ฐ๊ฒฐ์„ ์œ„ํ•ด View Resolver ์„ค์ •

    JSP ์ฝ”๋“œ ์ž‘์„ฑ

  • Controller ์ž‘์„ฑ

    ์ข‹์€ ๋””์ž์ธ์€ Controller๊ฐ€ ๋งŽ์€ ์ผ์„ ํ•˜์ง€ ์•Š๊ณ  Service์— ์ฒ˜๋ฆฌ๋ฅผ ์œ„์ž„

    !Untitled 6 27.png

  • web.xml - DispatcherServlet ์„ค์ •

    !Untitled 7 24.png

    !Untitled 8 21.png

    !Untitled 9 20.png

  • web.xml - ์ตœ์ƒ์œ„ Root ContextLoader ์„ค์ •

    !Untitled 10 18.png

  • Application Context ๋ถ„๋ฆฌ

    !Untitled 11 15.png

!Untitled 12 14.png

!Untitled 13 13.png

Spring Web Application์˜ ๋™์ž‘ ์›๋ฆฌ


!Untitled 14 12.png

์‹คํ–‰ ์ˆœ์„œ

  1. ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์‹คํ–‰๋˜๋ฉด Tomcat(WAS)์— ์˜ํ•ด web.xml์ด ๋กœ๋”ฉ

  2. web.xml์— ๋“ฑ๋ก๋˜์–ด ์žˆ๋Š” ContextLoaderListener(Java Class)๊ฐ€ ์ƒ์„ฑ. ContextLoaderListener class๋Š” ServletContextListener interface๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ApplicationContext๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์—ญํ• ์„ ์ˆ˜ํ–‰

  3. ์ƒ์„ฑ๋œ ContextLoaderListener๋Š” root-context.xml์„ loading

  4. root-context.xml์— ๋“ฑ๋ก๋˜์–ด ์žˆ๋Š” Spring Container๊ฐ€ ๊ตฌ๋™.. ์ด ๋•Œ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ž‘์„ฑํ•œ Business Logic(Service)์— ๋Œ€ํ•œ ๋ถ€๋ถ„๊ณผ Database Logic(DAO), VO ๊ฐ์ฒด๋“ค์ด ์ƒ์„ฑ

  5. Client๋กœ ๋ถ€ํ„ฐ ์š”์ฒญ(reqeust)๊ฐ€ ๋“ค์–ด์˜ด

  6. DispatcherServlet(Servlet)์ด ์ƒ์„ฑ. DispatcherServlet์€ FrontController์˜ ์—ญํ• ์„ ์ˆ˜ํ–‰
    Client๋กœ๋ถ€ํ„ฐ ์š”์ฒญ ์˜จ ๋ฉ”์‹œ์ง€๋ฅผ ๋ถ„์„ํ•˜์—ฌ ์•Œ๋งž์€ PageController์—๊ฒŒ ์ „๋‹ฌํ•˜๊ณ  ์‘๋‹ต์„ ๋ฐ›์•„ ์š”์ฒญ์— ๋”ฐ๋ฅธ ์‘๋‹ต์„ ์–ด๋–ป๊ฒŒ ํ•  ์ง€ ๊ฒฐ์ •. ์‹ค์งˆ์ ์ธ ์ž‘์—…์€ PageController์—์„œ ์ด๋ฃจ์–ด ์ง„๋‹ค.
    ์ด๋Ÿฌํ•œ ํด๋ž˜์Šค๋“ค์„ HandlerMapping, ViewResolver Class๋ผ๊ณ  ํ•จ.

  7. DispatcherServlet์€ servlet-context.xml์„ loading

  8. ๋‘ ๋ฒˆ์งธ Spring Container๊ฐ€ ๊ตฌ๋™๋˜๋ฉฐ ์‘๋‹ต์— ๋งž๋Š” PageController๋“ค์ด ๋™์ž‘, ์ด ๋•Œ ์ฒซ ๋ฒˆ์งธ Spring Container๊ฐ€ ๊ตฌ๋™๋˜๋ฉด์„œ ์ƒ์„ฑ๋œ DAO, VO, Service ํด๋ž˜์Šค๋“ค๊ณผ ํ˜‘์—…ํ•˜์—ฌ ์•Œ๋งž์€ ์ž‘์—…์„ ์ฒ˜๋ฆฌ

โš ๏ธ **GitHub.com Fallback** โš ๏ธ