[Spring] ModelAndView ๊ฐ์ฒด
๐๐ป ModelAndView ๊ฐ์ฒด
: ํ์ด์ง์ ๋ฐ์ดํฐ๋ฅผ ๋์์ ์ ์ฅ
์ปจํธ๋กค๋ฌ์์ View๋ก ๊ฐ์ฒด๋ ๋ฐ์ดํฐ๋ฅผ ๋๊ฒจ์ฃผ๊ณ ์ถ์ ๋ Model์ด๋ ModelAndView๋ฅผ ์ฌ์ฉํฉ๋๋ค.
๐ก MVC ํจํด
- Model, View, Controller์ ์ฝ์
- ํ๋์ ์ ํ๋ฆฌ์ผ์ด์
, ํ๋ก์ ํธ๋ฅผ ๊ตฌ์ฑํ ๋ ๊ทธ ๊ตฌ์ฑ์ ์์๋ฅผ ์ธ๊ฐ์ง ์ญํ ๋ก ๊ตฌ๋ถํ ํจํด
- ์๋ก์ ์ํฅ์ ์ฃผ์ง ์๋ ๊ด์ฌ์ฌ ๋ถ๋ฆฌ๊ฐ ์ ๋์ด์์
๐๐ป Model
์ ํ๋ฆฌ์ผ์ด์
์ ์ ๋ณด, ๋ฐ์ดํฐ๋ฅผ ๋ํ๋
๋๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค, ์ฒ์์ ์ ์ํ๋ ์์, ์ด๊ธฐํ ๊ฐ, ๋ณ์ ๋ฑ์ ๋ปํฉ๋๋ค.
๐๐ป View
input ํ
์คํธ, ์ฒดํฌ๋ฐ์ค ๋ฑ๊ณผ ๊ฐ์ ์ฌ์ฉ์ ์ธํฐํ์ด์ค ์์๋ฅผ ๋ํ๋
๋๋ค.
๋ฐ์ดํฐ ๋ฐ ๊ฐ์ฒด์ ์
๋ ฅ, ์ถ๋ ฅ ๋ฑ์ ๋ด๋นํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ฌ์ฉ์๋ค์ด ๋ณผ ์ ์๋ ํ๋ฉด์
๋๋ค.
๐๐ป Controller
๋ฐ์ดํฐ์ ๋ทฐ์ ๋ค๋ฆฌ ์ญํ ์ ํฉ๋๋ค.
์ฆ ์ฌ์ฉ์๊ฐ ๋ฐ์ดํฐ๋ฅผ ํด๋ฆญํ๊ณ ์์ ํ๋ ๊ฒ์ ๋ํ ์ด๋ฒคํธ๋ค์ ์ฒ๋ฆฌํ๋ ๋ถ๋ถ์
๋๋ค.
์ฆ, USER -> VIEW -> CONTROLLER -> MODEL -> DB
DB -> MODEL -> CONTROLLER -> VIEW -> USER ์ ๋ฐฉํฅ์ด๋ผ๊ณ ํ ์ ์์ต๋๋ค.
๐ Model
์ปจํธ๋กค๋ฌ์์ Model ๊ฐ์ฒด๋ฅผ ํ๋ผ๋ฏธํฐ๋ก ๋ฐ์์ ๋ฐ์ดํฐ๋ฅผ ๋ทฐ๋ก ๋๊ธธ ์ ์์ต๋๋ค.
model.addAttribute๋ฅผ ํตํด ๋๊ธธ ๋ฐ์ดํฐ์ ์ด๋ฆ๊ณผ ๊ฐ์ ๋ฃ์ผ๋ฉด, ์คํ๋ง์ด ์์์ ๊ฐ์ view๋ก ๋๊ฒจ์ค๋๋ค.
๋จ, return์์ view ๊ฒฝ๋ก๋ก ๋ฐํ์ด ํ์ํฉ๋๋ค !
๐ ModelAndView
๋ฐํ ๊ฐ์ผ๋ก ModelAndView ๊ฐ์ฒด๋ฅผ ์ค์ ํด์ฃผ๊ณ ์ ์ธ ๋ฐ ์์ฑํด์ผ ํฉ๋๋ค.
setViewName( )์ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ ๋ทฐ์ ์ด๋ฆ์ ์ค์ ํฉ๋๋ค -> ์ฆ, ๋งค๊ฐ๋ณ์๋ก ํ์ด์ง๋ช ์ด ๋ค์ด์ต๋๋ค.
addObject( , )๋ฅผ ํตํด ๋๊ธธ ๋ฐ์ดํฐ์ ์ด๋ฆ๊ณผ ๊ฐ์ ๋ฃ์ต๋๋ค. ์ฆ, ๋งค๊ฐ๋ณ์๋ก๋ ํค์ ๊ฐ์ด ๋ค์ด์ต๋๋ค.
@RequestMapping("/file")
public ModelAndView fileContent( ) {
ModelAndView mv = new ModelAndView();
List<fileVO> fileList = fileService.getfiles();
mv.setViewName("main/content");
mv.addObject("fileList", fileList);
return mv;
}
๐๐ป JSP ํ์ผ์ <c:out value = "${ ... }"> ์์ ${...}์ ํด๋นํ๋ ๋ด์ฉ์ ModelAndView๊ฐ์ฒด์ ์ ์ฅ๋
Attributes ์์ฑ์์ ๊บผ๋ด์ฌ ์ ์์ต๋๋ค.
๐ @ModelAttribute
์ ๋ฌ๋ฐ์ ํ๋ผ๋ฏธํฐ๋ฅผ model์ ๋ด์์ ํ๋ฉด๊น์ง ์ ๋ฌํ๋ คํ ๋ ์ฌ์ฉ๋๋ ์ด๋ ธํ ์ด์ ์ ๋๋ค.
HTTP Header์ ๊ฐ์ฒด๋ฅผ ํต์ผ๋ก ๋ด์ ์ ์ก์ํต๋๋ค.@ModelAttribute๋ @RequestParam๊ณผ model.addAttribute๊ฐ ํฌํจ๋ ํํ์ ๋๋ค.
public String test(@ModelAttribute("age") int age)
1) @RequestParam์ ํตํด age๋ผ๋ ํ๋ผ๋ฏธํฐ๋ฅผ ์ฝ์ด int age ๋ณ์์ ๋ด๊ธฐ
2) Model.addAttribute("age", age)๋ฅผ ํด์ค- ์ด๋ ํค๋ @ModelAttribute์ ๋งค๊ฐ ๊ฐ๊ณผ ๋์ผํ๋๋ก ํจ