Backend/Spring

[Spring] MVC(Model, View, Controller) 정리

_μ„±ν˜Έ_ 2022. 1. 16. 19:51
728x90
λ°˜μ‘ν˜•

● MVC(Model, View, Controller)λŠ” μ‚¬μš©μž μΈν„°νŽ˜μ΄μŠ€, 데이터 및 논리 μ œμ–΄λ₯Ό κ΅¬ν˜„ν•˜λŠ” 데 널리 μ‚¬μš©λ˜λŠ” μ†Œν”„νŠΈμ›¨μ–΄ λ””μžμΈ νŒ¨ν„΄μž…λ‹ˆλ‹€. μ†Œν”„νŠΈμ›¨μ–΄μ˜ λΉ„μ§€λ‹ˆμŠ€ 둜직과 화면을 κ΅¬λΆ„ν•˜λŠ”λ° 쀑점을 두고 μžˆμŠ΅λ‹ˆλ‹€. MVC의 λͺ©μ μ€ ν™”λ©΄κ³Ό 데이터 처리λ₯Ό 뢄리해 μ½”λ“œκ°„μ˜ 쒅속성을 쀄이고 κ΅¬μ„±μš”μ†Œκ°„μ˜ 역할을 λͺ…ν™•ν•˜κ²Œ ν•¨μœΌλ‘œμ¨ μ½”λ“œ 뢄리가 쉽고 ν˜‘μ—…μ„ μš©μ΄ν•˜κ²Œ ν•˜λŠ”λ° μžˆμŠ΅λ‹ˆλ‹€.


● λͺ¨λΈ(Model)

  • μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ 무엇을 ν•  것인지 μ •μ˜ν•œλ‹€. λ‚΄λΆ€ λΉ„μ¦ˆλ‹ˆμŠ€ λ‘œμ§μ„ μ²˜λ¦¬ν•˜κΈ° μœ„ν•œ 역할을 ν•œλ‹€. 즉, 데이터 μ €μž₯μ†Œ(ex. DB)와 μ—°λ™ν•˜μ—¬ μ‚¬μš©μžκ°€ μž…λ ₯ν•œ λ°μ΄ν„°λ‚˜ μ‚¬μš©μžμ—κ²Œ 좜λ ₯ν•  데이터λ₯Ό 닀룬닀. 특히, μ—¬λŸ¬ 개의 데이터 λ³€κ²½ μž‘μ—…(ex. μΆ”κ°€, λ³€κ²½, μ‚­μ œ)λ₯Ό ν•˜λ‚˜μ˜ μž‘μ—…μœΌλ‘œ 묢은 νŠΈλžœμž­μ…˜μ„ λ‹€λ£¨λŠ” 일도 ν•œλ‹€.
  • Model은 λ‹€λ₯Έ μ»΄ν¬λ„ŒνŠΈλ“€μ— λŒ€ν•΄ μ•Œμ§€ λͺ»ν•œλ‹€. 자기 μžμ‹ μ΄ 무엇을 μˆ˜ν–‰ν•˜λŠ”μ§€λ§Œ μ•Œκ³  μžˆλ‹€.
  • DAO(Data Access Object) 클래슀, Service ν΄λž˜μŠ€μ— ν•΄λ‹Ή

● λ·°(View)

  • μ΅œμ’… μ‚¬μš©μžμ—κ²Œ 무엇을 ν™”λ©΄(UI)둜 보여쀀닀. 화면에 무엇을 보여주기 μœ„ν•œ 역할을 ν•œλ‹€. 즉, λͺ¨λΈμ΄ μ²˜λ¦¬ν•œ λ°μ΄ν„°λ‚˜ κ·Έ μž‘μ—… κ²°κ³Όλ₯Ό κ°€μ§€κ³  μ‚¬μš©μžμ—κ²Œ 좜λ ₯ν•  화면을 λ§Œλ“ λ‹€. λ§Œλ“  화면은 μ›Ή λΈŒλΌμš°μ €κ°€ 좜λ ₯ν•œλ‹€.
  • View μ—­μ‹œλ„ λ‹€λ₯Έ μ»΄ν¬λ„ŒνŠΈλ“€μ— λŒ€ν•΄ μ•Œμ§€ λͺ»ν•œλ‹€. 자기 μžμ‹ μ΄ 무엇을 μˆ˜ν–‰ν•˜λŠ”μ§€λ§Œ μ•Œκ³  μžˆλ‹€.
  • HTMLκ³Ό JSPλ₯Ό μ‚¬μš©ν•˜μ—¬ μž‘μ„±

● 컨트둀러(Controller)

  • Modelκ³Ό View 사이에 μžˆλŠ” μ»΄ν¬λ„ŒνŠΈμ΄λ‹€. Model이 데이터λ₯Ό μ–΄λ–»κ²Œ μ²˜λ¦¬ν• μ§€ μ•Œλ €μ£ΌλŠ” 역할을 ν•œλ‹€. ν΄λΌμ΄μ–ΈνŠΈμ˜ μš”μ²­μ„ λ°›μœΌλ©΄ ν•΄λ‹Ή μš”μ²­μ— λŒ€ν•œ μ‹€μ œ 업무λ₯Ό μˆ˜ν–‰ν•˜λŠ” Model을 ν˜ΈμΆœν•œλ‹€. ν΄λΌμ΄μ–ΈνŠΈκ°€ 보낸 데이터가 μžˆλ‹€λ©΄, λͺ¨λΈμ„ ν˜ΈμΆœν•  λ•Œ μ „λ‹¬ν•˜κΈ° μ‰½κ²Œ 적절히 κ°€κ³΅ν•œλ‹€. Model이 업무 μˆ˜ν–‰μ„ μ™„λ£Œν•˜λ©΄ κ·Έ κ²°κ³Όλ₯Ό κ°€μ§€κ³  화면을 μƒμ„±ν•˜λ„λ‘ View에 μ „λ‹¬ν•œλ‹€. 즉, ν΄λΌμ΄μ–ΈνŠΈμ˜ μš”μ²­μ— λŒ€ν•΄ Modelκ³Ό Viewλ₯Ό κ²°μ •ν•˜μ—¬ μ „λ‹¬ν•˜λŠ” μΌμ’…μ˜ μ‘°μ •μžλ‘œμ„œμ˜ 일을 ν•œλ‹€.
  • ControllerλŠ” λ‹€λ₯Έ μ»΄ν¬λ„ŒνŠΈλ“€μ— λŒ€ν•΄ μ•Œκ³  μžˆλ‹€. 자기 μžμ‹  외에 Modelκ³Ό Viewκ°€ 무엇을 μˆ˜ν–‰ν•˜λŠ”μ§€ μ•Œκ³  μžˆλ‹€
  • Servletκ³Ό JSPλ₯Ό μ‚¬μš©ν•˜μ—¬ μž‘μ„±

MVC νŒ¨ν„΄