KyungHwan's etc.

스프링프레임워크 - ModelAndView 본문

Java/스프링프레임워크

스프링프레임워크 - ModelAndView

KyungHwan_0 2018. 6. 21. 10:51

ModelAndView

스프링프레임워크는 MVC디자인 패턴을 이용하는 프레임워크이기 때문에 ModelAndView 객체를 바탕으로 컨트롤러에서 모델과 뷰 사이에 데이터를 쉽게 전송할수 있게 제공하고 있다.

ModelAndView

  1. Controller 처리 결과 후 응답할 view와 view에 전달할 값을 저장

@RequestMapping("/board/view")
public String view(Model model) {
   
   // 데이터만 설정이 가능
   model.addAttribute("id", "hongku");
   
   return "board/view";
}
  1. 생성자

- ModelAndView(String viewName) : 응답할 view 설정

- ModelAndView(String viewName, Map values) : 응답할 view와 view로 전달할 값들을 저장 한 Map 객체

- ModelAndView(String viewName, String name, Object value) : 응답할 view이름, view로 넘길 객체의 name-value

  1. 주요 메소드

- setViewName(String view) : 응답할 view이름을 설정

- addObject(String name, Object value) : view에 전달할 값을 설정 · requestScope에 설정됨

- addAllObject(Map values) : view에 전달할 값을 Map에 name-value로 저장하여

한번에 설정· requestScope에 설정됨

@RequestMapping("/board/content")
public ModelAndView content() {

   // 데이터와 뷰를 동시에 설정이 가능
   ModelAndView mv = new ModelAndView();
   mv.setViewName("/board/content"); // 뷰의 이름
   mv.addObject("data", "12341234"); // 뷰로 보낼 데이터 값
   
   return mv;
}

  1. Redirect 방식 전송

- view이름에 redirect: 접두어 붙인다.

mv.setViewName("/board/content");

View인 jsp도 똑같이 ${}를 이용한다.

Data : ${data}


2.ViewResolver

1.Controller가 넘긴 view 이름을 통해 알맞은 view를 찾는 역할

  1. Controller는 ModelAndview 객체에 응달할 view이름을 넣어 리턴

  2. DispachServlet은 ViewResolver에게 응답할 view를 요청한다

  3. ViewResolver는 View 이름을 이용해 알맞은 view 객체를 찾아

  4. DispatcherServlet에게 전달

2.ViewResovler - Spring 설정 파일에 등록한다.

3.InternalResourceViewResolver

- JSP나 HTML등의 내부 자원을 이용해 뷰 생성

- InternalResourceView를 기본 뷰로 사용

4.BeanNameViewResolver

- 뷰의 이름과 동일한 이름을 가지는 빈을 View로 사용

- 사용자 정의 View 객체를 사용하는 경우 주로 사용

5.XmlViewResolver

- BeanNameViewResolver와 동일 하나 뷰 객체를 xml 파일에 설정해 놓는 것이

차이.

- Bean 등록 시 location 프라퍼티에 xml 파일을 지정

Reference

http://keumjae.tistory.com/77

http://blog.naver.com/bignose7171/30141249980

Comments