반응형
250x250
Notice
Recent Posts
Recent Comments
Link
관리 메뉴

Yeonee's Story

[Spring] Model과 ModelAndView 객체로 응답페이지 url재요청 하기 (+ Model과 ModelAndView 차이점 및 개념) 본문

⋆ 。゜☁︎ 。⋆ 。゜☾゜。⋆⋆ 。゜☁︎ 。⋆ 。゜☾゜。⋆/Spring

[Spring] Model과 ModelAndView 객체로 응답페이지 url재요청 하기 (+ Model과 ModelAndView 차이점 및 개념)

yeonee 여니 2023. 8. 3. 20:03
728x90
반응형
SMALL

안녕하세요.
https://blog.naver.com/sysysy0302 여니입니다 :)

 

yeonee 블로그 : 네이버 블로그

예쁘고 맛있게 먹고 건강하게,강인하지만 온화하게 행하라. ※맛스타운스타일상 인스타 www.instagram.com/s2._.y25n ※맛집감성일상 유튜브https://youtube.com/channel/@S2_yeonee 티스토리https://yeoneeluv.tistory.co

blog.naver.com

 

 

< 요청 처리 후 "응답 데이터를 담고" 응답페이지로 url재요청 하는 방법 >

+ 스프링 Model과 ModelAndView 차이점 및 개념

  1) Model 객체 이용 
     포워딩할 응답뷰로 전달하고자 하는 데이터를 맵형식으로 담을 수 있는 객체 
     (Model객체는 requestScope를 가지고 있음) -> request, session을 대신하는 객체
  
  - 기본 scope : request이고, session scope로 변환하고 싶은 경우 클래스 위에 @SessionAttribute를
  작성하면 된다. model 안에 데이터를 추가하는 함수 : addAttribute()
  
  2) ModelAndView 객체 이용 
  // session scope는 안담겨서 session scope를 이용하고 싶으면 Model객체를 사용해야한다.
  ModelAndView에서 Model은 데이터를 담을수 있는 key=value형태의 객체 (위 Model과 동일)
  View는 이동하고자하는 페이지에 대한 정보를 담고있는 객체.
  합쳐서 ModelAndView mv에 model에 데이터를 추가하는 함수
  mv.addObject(key,value) mv에 view에 데이터를 추가하는 함수 (mv = ModelAndView) 
  mv.setViewName("이동할페이지")
  
  -> Model로 데이터를 전달하든, ModelAndView로 데이터를 전달하든 
     결국은 ModelAndView로 통합되서 Spring container에 의해 관리된다.

1. Model 객체 이용 포워딩할 응답뷰로 전달하고자 하는 데이터를 맵형식으로 담을 수 있는 객체입니다.
   (Model객체는 requestScope를 가지고 있음) 
   -> request, session을 대신하는 객체

2. 기본 scope는 request이고, session scope로 변환하고 싶은 경우 클래스 위에 @SessionAttribute를
    작성하면 됩니다.

3. model 안에 데이터를 추가하는 함수 : addAttribute()

4. ModelAndView에서 Model은 데이터를 담을수 있는 key=value형태의 객체(위 Model과 동일) 
    View는 이동하고자하는 페이지에 대한 정보를 담고있는 객체. 합쳐서 ModelAndView mv에 model에 데이터를
   추가하는 함수

 

<예시>

@RequestMapping(value = "login.me" , method = RequestMethod.POST) 
public ModelAndView loginMember( //; ModelAndView 쓸때는 반환형 ModelAndView로 변경해주기

@ModelAttribute Member m , HttpSession session, Model model, ModelAndView mv ) {
//; 로그인하기 위해 로그인 정보를 담은 session객체

model.addAttribute("errorMsg","오류발생"); //; 기본값으로 request를 갖고 있다.

mv.addObject("errorMsg", "modelAndView 테스트");
mv.setViewName("common/errorPage");

System.out.println("userId : "+m.getUserId() );
System.out.println("userPwd : "+m.getUserPwd());

return mv; 

}

 

< model.addAttribute("errorMsg","오류발생"); 코드의 화면 출력 모습>

 

< mv.addObject("errorMsg", "modelAndView 테스트"); 코드의 화면 출력 모습>

 

결과적으로 두 가지 코드가 화면에 출력된 결과는 같습니다.
작동원리상 Model과 ModelAndView은 같은데, 대체로 Model을 더 많이 사용합니다.

 

728x90
반응형
LIST