@GetMapping("/page01")
public void page01(PersonDto dto, Model model) {
model.addAttribute("dto", dto);
model.addAttribute("test", "test1Value");
}
๐ก ์ฐธ๊ณ
Model์ DispatcherServlet์ด ๋ทฐ ์ด๋ฆ์ ์๋์ผ๋ก ์ถ๋ก ํฉ๋๋ค.
์ฃผ๋ก ์ปจ๋ฒค์ ๊ธฐ๋ฐ์ ๊ณ ์ ๋ ๋ทฐ ์ฒ๋ฆฌ์ ์ ํฉํฉ๋๋ค.
@GetMapping("/page04/{username}/{age}/{addr}")
public ModelAndView page04(PersonDto dto) {
ModelAndView mav = new ModelAndView();
mav.addObject("dto", dto);
mav.setViewName("param/page01");
return mav;
}
๐ก ์ฐธ๊ณ
ModelAndView๋ ๊ฐ๋ฐ์๊ฐ ๋ทฐ ์ด๋ฆ์ ๋ช ์์ ์ผ๋ก ์ง์ ํ ์ ์์ด,
์ํฉ์ ๋ฐ๋ผ ๋์ ์ผ๋ก ๋ทฐ๋ฅผ ๋ณ๊ฒฝํด์ผ ํ ๋ ์ ์ฉํฉ๋๋ค.
๊ตฌ๋ถ | Model | ModelAndView |
---|---|---|
๋ฐ์ดํฐ ์ ๋ฌ | O | O |
๋ทฐ ์ด๋ฆ ์ค์ | ์๋ ์ถ๋ก | ๋ช ์์ ์ค์ |
์ฌ์ฉ ์ฌ๋ก | ์ผ๋ฐ์ ์ธ ๊ณ ์ ๋ทฐ | ๋์ ๋ทฐ ์ฒ๋ฆฌ |
๊ตฌ๋ถ | Forward | Redirect |
---|---|---|
๋์ ๋ฐฉ์ | ์๋ฒ ๋ด๋ถ ์์ฒญ ์ ๋ฌ | ํด๋ผ์ด์ธํธ์๊ฒ ์ฌ์์ฒญ |
URL ๋ณํ | ๋ณํ ์์ | URL ๋ณ๊ฒฝ |
๋ฐ์ดํฐ ์ ๋ฌ | Model | RedirectAttributes |
์ฌ์ฉ ๋ชฉ์ | ํ๋ฆ ์ ์ง, ๋ฐ์ดํฐ ์ ์ง | ์ ์์ฒญ, ํ์ด์ง ์ด๋ |
โกย ์ธ์ Forward๋ฅผ ์ฐ๊ณ , ์ธ์ Redirect๋ฅผ ์ธ๊น?
- Forward: ๋ด๋ถ ๋ก์ง ์ฒ๋ฆฌ๊ฐ ์ด์ด์ง ๋ (์: ํผ ์ ์ถ ํ ๊ฒฐ๊ณผ ํ์ด์ง).
- Redirect: ์๋ก๊ณ ์นจ ์ ์ค๋ณต ์์ฒญ ๋ฐฉ์ง, URL ๊ณต์ ๊ฐ ํ์ํ ๋ (์: ๊ฒ์๊ธ ์์ฑ ํ ๋ชฉ๋ก ํ์ด์ง ์ด๋).
@GetMapping("/page05")
public String page05(HttpServletRequest req) {
String name = req.getParameter("username");
int age = Integer.parseInt(req.getParameter("age"));
req.setAttribute("dto", new PersonDto(name, age, "Seoul"));
return "param/page01";
}
๐ซย ์ฃผ์
Servlet ๋ฐฉ์์ ์ ์ง๋ณด์์ ํ์ฅ์ฑ์ด ๋จ์ด์ง๋ฏ๋ก,
์คํ๋ง MVC์ ์ด๋ ธํ ์ด์ ๊ธฐ๋ฐ ๋ฐฉ์์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
์ฒ์์๋ ๋ฆฌ๋ค์ด๋ ํธ ํ ๋ฐ์ดํฐ๊ฐ ์ฌ๋ผ์ง๋ ๋ฌธ์ ๋ก ๋๋ฒ๊น ์ ๋ง์ ์๊ฐ์ ์๋ชจํ๋ค.
ํ์ง๋ง RedirectAttributes์ Flash Attributes๋ฅผ ๋ฐฐ์ฐ๊ณ ๋์,
๋ฆฌ๋ค์ด๋ ํธ ์ ๋ฐ์ดํฐ ์ ๋ฌ ๋ฐฉ์์ ๋ช ํํ ์ดํดํ๊ฒ ๋์๋ค.
์ด์ ๋ ์ํฉ์ ๋ง๊ฒ Forward์ Redirect๋ฅผ ๊ตฌ๋ถํด์ ํ์ฉํ ์์ ์ด ์๊ฒผ๋ค.