Study/Spring

[Spring] ModelAndView ๊ฐ์ฒด

hong- 2022. 11. 18. 17:29

๐Ÿ™๐Ÿป  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์˜ ๋งค๊ฐœ ๊ฐ’๊ณผ ๋™์ผํ•˜๋„๋ก ํ•จ