[Spring] MVC 패턴 이해하기2

    앞에서 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

    댓글

    Designed by JB FACTORY