[Spring] MVC 패턴 이해하기2
- Web/Spring
- 2020. 10. 26.
앞에서 XML을 통해서 Controller가 인식되는 것을 확인하였습니다.
이번시간에는 JSP(View)에게 값을 넘기는 것에 대해 설명하겠습니다.
여기서 주목해야 할 것은
Model 이라는 객체입니다.
Model은 JSP에서 request값과 비슷하며
JSP에서 request.setAttribute("키값", 결과 값)을 입력했다면
Spring에서는 model.Attribute("키값", 결과 값)을 입력하게 됩니다.
이제 여기서 두 가지 방법에 대해 이야기 하겠습니다.
첫 번째 방법 입니다.
@RequestMapping("/replay")
public String replay(Model model) {
model.addAttribute("id", 30);
return "list/replay";
}
model.addAttribute("키 값", 결과값)이 적힌 것을 확인 할 수 있습니다.
다음 페이지의 이동 값은 return에 담습니다.
가장 쉽고, 많이 쓰는 방법이기도 합니다.
JSP에서는 <%=request.getAttribute("id")%> 을 입력하게 되면 정상적으로 30을 받는 것을 확인 할 수 있습니다.
두 번째 방법 입니다.
@RequestMapping("/replay2")
public ModelAndView replay2() {
ModelAndView mv = new ModelAndView();
mv.addObject("id", 77);
mv.setViewName("list/replay");
return mv;
}
Model 객체를 대신해서 ModelAndView를 사용하였습니다.
ModelAndView 또한 위의 첫 번째 방법처럼 Model처럼 사용 할 수 있습니다.
다만, return값을 String이 아닌 ModelAndView 방식을 사용해야 한다는 점 입니다.
그래서 ModelAndView에 담는 방식 또한 달라졌습니다.
addObejct 메소드는 첫 번재 방법의 Attribute와 동일합니다.
그러나 setViewName 방식은 기존 return값에 경로를 넣었다면 이번에는 메소드에 담는 방식 입니다.
이렇게 방식을 나눈 것에 대해 이유가 있습니다.
- 인터페이스를 통해 오버라이딩을 해야 할 경우 매개변수에 대한 제한.
- 오버로딩을 통해 똑같은 똑같은 이름의 메소드명을 사용하더라도 따로 사용 할 수 있습니다.
Model 방식과 ModelAndView 방식에 대해 사용제한은 따로 없습니다.
그러나 상황에 따라서 나눠 쓸 수 있다면 매우 좋은 방식이 되기 때문에 아시고 계시면 매우 좋습니다.
결과 JSP는 다음과 같이 정의 합니다.
<body>
reply.jsp 입니다. <br />
id : ${id}
</body>
주소창에 "/replay"를 입력합니다.
결과가 이렇게 출력 되었다면 정상입니다.
'Web > Spring' 카테고리의 다른 글
[Spring] Interceptor (0) | 2021.01.06 |
---|---|
[Spring] MVC 이해하기3 (0) | 2020.10.26 |
[Spring] Spring MVC를 만들어보자 (0) | 2020.10.23 |
[Spring] AOP 사용하기(Java) (0) | 2020.10.22 |
[Spring] 선택해서 해당 xml 실행하게 만들기 (0) | 2020.10.22 |