ModelAndView
- 컨트롤러 처리 결과 후 응답할 view와 view에 전달할 값을 저장 및 전달하는 클래스
1 주요 생성자
생성자 | 역할 |
---|---|
ModelAndView(String viewName) | 응답할 view |
ModelAndView(String viewName, Map values) | 응답할 view와 view로 전달할 값들을 저장한 Map 객체 |
ModelAndView(Stirng viewName, String name, Object value) | 응답할 view이름, view로 넘길 객체의 name 과 value |
2 주요 메소드
메소드 | 역할 |
---|---|
setViewName(String view) | 응답할 view이름 설정 |
addObject(String name, Object value) | view에 전달할 값을 설정 |
addAllObject(Map values) | view에 전달할 값을 Map에 name-value로 저장하여 한번에 설정 |
3 Redirect 방식 전송
- view이름 앞에 redirect: 입력. - ex) mv.setViewName("redirect:/home.jsp" );
ViewResolver
- View 이름으로부터 사용할 View Object를 매핑하는 역할.
- 특정 ViewResolver를 Bean으로 등록하지 않으면, DispatcherServlet은 기본 viewResolver인 InternalResourceView를 사용한다.
- Controller는 ModelAndView 객체에 응답할 view이름을 넣어 Return (setViewName) - DispatcherServlet은 ViewResolver에게 응답할 view를 요청한다. - ViewResolver는 View이름을 이용해 알맞은 view객체를 찾아 DispatcherServlet에게 전달.
1 InternalResourceViewResolver(default)
- jsp나 html등의 내부자원 이용해 뷰 생성
- InternalResourceView를 기본 뷰로 사용
ex) ViewResolver설정
[applicationContext.xml]
<bean id ="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/">
<property name="suffix" value=".jsp">
</bean>
[Controller.java] ModelAndView mv = new ModelAndView(); mv.setViewName("hello");
위 설정의 경우 viewResolver는 /WEB-INF/jsp/hello.jsp 경로의 jsp view를 찾는다.
2 BeanNameViewResolver
- 뷰의 이름과 동일한 이름 가지는 빈을 view로 사용.
- 사용자 정의 View객체를 사용하는 경우 사용.
ex)
1.컨트롤러에서 CommonFile 클래스의 getDownLoadView 메소드 호출
- [UserManagementController.
java]
return CommonFile.getDownloadView(file, fileName);
2.commonFile클래스에서 ModelAndView 리턴
[CommonFile.java]
public static ModelAndView getDownloadView(File file, String fileName) { CommonFile downloadFile = new CommonFile(); downloadFile.setFile(file); //파일경로 downloadFile.setFileName(
fileName); //파일이름 ModelAndView mav = new ModelAndView(); //모델엔뷰 객체생성 mav.setViewName("download"); // 응답할 view이름 설정"download" mav.addObject("downloadFile", downloadFile); // view에 전달할 값 return mav; // modelAndView return }
3. [applicaitonContext.xml] BeanNameViewResolver 설정
<bean class="org.springframework.web.servlet.view. BeanNameViewResolver ">
<property name="order" value="0" /> //우선순위 0.
</bean>
뷰의 이름과 동일한 이름 가지는 빈을 view객체로 사용하도록 설정한다.
4.View객체로 사용할 bean 설정.
<!-- 다운로드 View -->
<bean id="download" class="com.imoxion.sensmail.web.common. DownloadView"/>
위와 같이 빈을 등록하면 download라는 이름으로 view를 호출했을 때 지정한 클래스를 객체로 사용
"downlaod" 빈 설정을 해준다. -> DownLoadView 클래스를 탄다.
[DownLoadView.java]클래스를 타고 최종적으로 파일을 다운로드 하는 작업을 실행하게 된다..!!
3 XmlViewResolver
- BeanNameViewResolver 와 동일하나, 뷰 객체를 xml파일에 설정해 놓는 차이.
- Bean등록시 location properties에 xml 파일을 지정.
'Back-end > JAVA,Spring' 카테고리의 다른 글
[스프링]자바에서 설정파일(xml , properties.. ) 읽어들이기. (0) | 2019.05.30 |
---|---|
[java] Enhanced For Loop 향상된 for문 이란? (0) | 2019.04.23 |
[Spring Boot] 스프링 부트 MVC 기본 환경설정 (0) | 2019.03.17 |
[JSP]내장객체 - request /response/ session 객체 (1) | 2019.01.08 |
Java static 이란? 개념/사용법 (0) | 2018.11.19 |