๐[Spring] Spring MVC
Spring MVC๋?
Spring MVC
๋ MVCํจํด์ ์ฌ์ฉํด ์น์ ๊ตฌ์ฑ(์ฌ์ฉ์ ์์ฒญ์ ์ฒ๋ฆฌ)ํ ์ ์๋๋ก ํ๋ Spring์ด ์ง์ํ๋ ํ๋ ์์ํฌ์ด๋ค.
Spring MVC์ ๊ตฌ์กฐ
Spring MVC์ ์ฃผ์ ๊ตฌ์ฑ์์๋ Model, View Controller์ด๋ค.
ํ์ง๋ง, ์ด๋ค์ด ์ ๊ธฐ์ ์ผ๋ก ๋์ํ๋ ค๋ฉด ๋ค์ํ ๊ตฌ์ฑ์์๊ฐ ํ์ํ๋ค.
DispatcherServlet(Front Controller)
DispatcherServlet
์ด๋, ๊ฐ์ฅ ์๋จ์์ HTTP Request๋ฅผ ์ฒ๋ฆฌํ๋ Controller์ด๋ค.
๊ฐ๋จํ๊ฒ ์๊ฐํ๋ฉด ์ฌ์ฉ์ ์์ฒญ์ ๊ฐ์ฅ ๋จผ์ ๋ฐ์, ํด๋น ์์ฒญ์ ์ฒ๋ฆฌํ Controller๋ฅผ ์ง์ ํด์ฃผ๋ ์ญํ ์ด๋ค.
Handler(Controller)
Handler
๋ DistpatcherServlet์ ์ํด ๋ฐฐ์ ๋ Controller์ด๋ค.
Controller๋ ์์ฒญ์ ์ฒ๋ฆฌํ๊ธฐ ์ํ Model์ ํธ์ถํด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๊ด๋ ์ฒ๋ฆฌ๋ฅผ ์ํํ๋๋ก ํ๊ฑฐ๋, View๋ฅผ ๋ฐํํ๋ ์ญํ ์ ํ๋ค.
ModelAndView
ModelAndView
๋ Handler ์ฒ๋ฆฌ ๊ฒฐ๊ณผ ํ ์๋ตํ View์ View์ ์ ๋ฌํ ๊ฐ์ ์ ์ฅํ๋ ๊ฐ์ฒด์ด๋ค.
๋ค์๊ณผ ๊ฐ์ ์์ฑ์๋ค์ด ํ์ํ๋ค.
ModelAndView(String viewName)
: ์๋ตํ view ์ค์
ModelAndView(String viewName, Map values)
: ์๋ตํ view์ view๋ก ์ ๋ฌํ ๊ฐ๋ค์ ์ ์ฅํ Map ๊ฐ์ฒด
ModelAndView(String viewName, String name, Object value)
: ์๋ตํ view ์ด๋ฆ, view๋ก ๋๊ธธ ๊ฐ์ฒด์ name-value
View Resolver
View Resolver
๋ ์์ Handler์์ ์์ฒญ์ ์ฒ๋ฆฌํ ํ, ModelAndView๋ฅผ ๋ฐํํ๋๋ฐ, ์ด ํ์ ModelAndView๋ฅผ ์๋ง์ View๋ก ์ ๋ฌํ๊ธฐ ์ํด
DispatcherServlet์ ์ํด View Resolver๊ฐ ํธ์ถ๋๋ค.
View Resolver๋ ModelAndView ๊ฐ์ฒด๋ฅผ View ์์ญ์ผ๋ก ์ ๋ฌํ๊ธฐ ์ํด ์๋ง์ View ์ ๋ณด๋ฅผ ์ค์ ํ๋ ์ญํ ์ ํ๋ค.
๋์ ์์
MVC
MVC
๋ Model View Controller์ ์ฝ์๋ก ๋์์ธ ํจํด(design pattern)
์ค ํ๋์ด๋ค.
Model, View, Controller๋ ๊ฐ์ ์ํํ๋ ์ญํ ์ด ๋ค๋ฅธ๋ฐ, ์ด ์ปจํ
์ด๋๋ค์ด ์ฐ๊ฒฐ๋์ด ํ๋์ ํ๋ก์ ํธ๋ฅผ ๊ตฌ์ฑํ๋ค.
Model
๋ชจ๋ธ(Model) ์ ์์ฒญ์ ๋ฐ๋ฅธ ๋น์ฆ๋์ค ๋ก์ง์ ์ฒ๋ฆฌํ๋ ์ญํ ์ ์ํํ๋ค.
ํํ DTO, DAO, VO
์ ๊ฐ์ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๋ค.
DAO(Data Access Object)
: ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๊ทผํ๋ ๊ฐ์ฒด๋ก, ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๊ทผ ๋ก์ง๊ณผ ๋น์ฆ๋์ค ๋ก์ง์ ๋ถ๋ฆฌํ๊ธฐ ์ํด ์ฌ์ฉํ๋ค.
DTO(Data Transfer Object)
: ๊ณ์ธต๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ ๊ฐ์ฒด๋ก, getter/setter ์ธ์ ๋ก์ง์ ํ์ํ์ง ์๋ค.
VO(Value Object)
: ๊ฐ ๊ทธ ์์ฒด๋ฅผ ๋ํ๋ด๋ ๊ฐ์ฒด๋ก, ๋ก์ง์ ํฌํจํ ์ ์๊ณ , ๋ถ๋ณ์ฑ ๋ณด์ฅ์ ์ํด ์์ฑ์๋ฅผ ์ฌ์ฉํด์ผํ๋ค.
๋ชจ๋ธ์ ํน์ง์ ๋ค์๊ณผ ๊ฐ๋ค.
- ์ฌ์ฉ์๊ฐ ํธ์งํ๊ธธ ์ํ๋ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง๊ณ ์์ด์ผ ํ๋ค.
- View๋ Controller์ ๋ํด ์ด๋ค ์ ๋ณด๋ ์์ง ์์์ผ ํ๋ค.
- ๋ณ๊ฒฝ์ด ์ผ์ด๋๋ฉด ๋ณ๊ฒฝ ํต์ง์ ๋ํ ์ฒ๋ฆฌ๋ฐฉ๋ฒ์ ๊ตฌํํด์ผ ํ๋ค.
DTO (Data Transfer Object) : ๋ฐ์ดํฐ ์ ๋ฌ
DAO (Data Access Object) : ๋ฐ์ดํฐ์ ์ ๊ทผ
Service : DAO, DTO, ๊ฒ์ฆ๋ก์ง, ๊ธฐํ๋ก์ง์ ์ฌ์ฉํ์ฌ ํ๋์ ๊ธฐ๋ฅ์ ๊ตฌํํ ๋ชจ๋ธ
View
๋ทฐ(View) ๋ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ๋งํ๋ค.
.html
, .jsp
, .mustache
์ ๊ฐ์ ํ์ผ๋ค๋ก ์๊ฐํ ์ ์๋ค.
๋ทฐ์ ํน์ง์ ๋ค์๊ณผ ๊ฐ๋ค.
- ๋ชจ๋ธ์ด ๊ฐ์ง๊ณ ์๋ ์ ๋ณด๋ฅผ ๋ฐ๋ก ์ ์ฅํด์๋ ์๋๋ค.
- ๋ชจ๋ธ์ด๋ ์ปจํธ๋กค๋ฌ์ ๊ฐ์ด ๋ค๋ฅธ ๊ตฌ์ฑ์์๋ค์ ๋ชฐ๋ผ์ผ ํ๋ค.
- ๋ณ๊ฒฝ์ด ์ผ์ด๋๋ฉด ๋ณ๊ฒฝ ํต์ง์ ๋ํ ์ฒ๋ฆฌ๋ฐฉ๋ฒ์ ๊ตฌํํด์ผ ํ๋ค.
Controller
์ปจํธ๋กค๋ฌ(Controller) ๋ ์ฌ์ฉ์ ์์ฒญ์ ์ฒ๋ฆฌํ๋ ์ผ์ข
์ ์ฐฝ๊ตฌ
์ ์ญํ ์ ํ๋ค.
์ปจํธ๋กค๋ฌ์ ํน์ง์ ๋ค์๊ณผ ๊ฐ๋ค.
- ๋ชจ๋ธ์ด๋ ๋ทฐ์ ๋ํด ์๊ณ ์์ด์ผ ํ๋ค.
- ๋ชจ๋ธ์ด๋ ๋ทฐ์ ๋ณ๊ฒฝ์ ๋ชจ๋ํฐ๋ง ํด์ผ ํ๋ค.
Spring MVC์ Thymeleaf ์ฐ๋ ์ค์
โhttps://mvnrepository.comโ์์ ์๋ ํค์๋๋ฅผ ๊ฒ์ํ์ฌ ์์กด์ฑ ์ถ๊ฐ ํ์
- servlet-api
- servlet-jsp.api
- spring-webmvc
- thymeleaf-spring5
- thymeleaf-layout
- thymeleaf-jsr310 (thymeleaf extras java8time)
- sjf4j
- Logback Classic Module
- web.xml
- servlet
- filter
Thymeleaf(ํ์๋ฆฌํ)
ํ์๋ฆฌํ๋, ์คํ๋ง๋ถํธ์์ ๊ณต์์ ์ผ๋ก ์ง์ํ๋ view ํ
ํ๋ฆฟ์ด๋ค.
JSP์ ๋ฌ๋ฆฌ ํ์๋ฆฌํ ๋ฌธ์๋ html ํ์ฅ์๋ฅผ ๊ฐ๊ณ ์์ด ์๋ฒ ์
์ฑ๋ ๋์ ๊ฐ๋ฅํจ
์ฐธ๊ณ ์๋ฃ
Spring MVC Framework๋ ๋ฌด์์ธ๊ฐ?
[JAVA] DTO์ VO์ ์ฐจ์ด
[Spring] ModelAndView
[Spring MVC] ์คํ๋ง MVC ๋ทฐ ๋ฆฌ์กธ๋ฒ(View Resolver)
DAO, DTO, VO ๋? ๊ฐ๋จํ ๊ฐ๋
์ ๋ฆฌ
๋๊ธ๋จ๊ธฐ๊ธฐ