- ViewResolver 이란 ?
Controller가 넘긴 view 이름을 통해 알맞은 view를 찾는 역할
View 이름으로부터 사용할 View Object를 매핑하는 역할
① Controller는 ModelAndview 객체에 응달할 view이름을 넣어 리턴
② DispachServlet은 ViewResolver에게 응답할 view를 요청한다
③ ViewResolver는 View 이름을 이용해 알맞은 view 객체를 찾아 DispatcherServlet에게 전달
1. tile ViewResolver 추가
tiles.xml과 그 안에서 view에 맞는 해당 definition을 찾아줄 tile ViewResolver 추가
<bean class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<property name="viewClass"
value="org.springframework.web.servlet.view.tiles3.TilesView" />
<property name="order" value="1" /> <!-- 순서1 -->
</bean>
2. dispatcher-servlet.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/mvc
https://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/context
https://www.springframework.org/schema/context/spring-context.xsd">
<!-- 어노테이션 사용하기위함 -->
<context:annotation-config/>
<!-- /index url요청이 오면 class를 객체화하여 호출 -->
<bean id="/index" class="com.newlecture.web.controller.indexController"/>
<bean id="/notice/list" class="com.newlecture.web.controller.notice.ListController">
<!-- <property name="noticeService" ref="noticeService" /> -->
<!-- listController의 name=setter명(set생략,소문자시작), ref=매개변수명 -->
<!-- 인터페이스명 -->
</bean>
<bean id="/notice/detail" class="com.newlecture.web.controller.notice.DetailController"/>
<!-- tilesViewResolver설정 : 기존의 viewResolver이 받아서 prefix,suffix로 쓰는 InternalResourceViewResolver 대신
xml파일 설정으로 jsp를 만든다 -->
<!-- InternalResourceViewResolver 는 UrlBasedViewResolver 의 하위 클래스 -->
<!-- UrlBasedViewResolver-페이지를 합지고 이어주는 끈 역할 (타일즈를 이용하기 위한 뷰 리졸버)-->
<bean class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<property name="viewClass"
value="org.springframework.web.servlet.view.tiles3.TilesView" />
<property name="order" value="1" /> <!-- 순서1 -->
</bean>
<!-- TilesConfigurer : tiles.xml파일을 받아오는 소스 설정 -->
<bean
class="org.springframework.web.servlet.view.tiles3.TilesConfigurer">
<property name="definitions" value="/WEB-INF/tiles.xml" />
</bean>
<!-- view까지 경로 ?-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/view/"></property> <!-- prefix-페이지 찾기위한 접두사 -->
<property name="suffix" value=".jsp"></property> <!-- suffix-페이지 찾기위한 접미사 -->
<property name="order" value="2" /> <!-- 순서2 -->
</bean>
Tiles세팅인 UrlBasedViewResolver이 기존의 ViewResolver보다 우선순위가 높아야하므로 order을 1로 set해준다.
기존의 ViewResolver인 InternalResourceViewResolver을 우선순의 2로 set 해준다.
-- InternalResourceViewResolver
- Default(기본) 뷰 리졸버. JSP를 뷰로 사용할 때 쓰임
- DispatcherServlet에게 아무런 뷰 리졸버를 등록하지 않으면, 기본으로 동작하는 뷰 리졸버에요.
- 뷰 리졸버를 등록하지 않고 사용하는 일은 거의 없다.
- InternalResourceViewResolver 빈 등록 & prefix,suffix 설정
-- 컨트롤러에서 리턴하는 뷰 이름에 접두,접미어를 붙여서 JSP페이지의 경로를 찾는다.
-- 만약 컨트롤러가 “kbh"라는 문자열로 된 뷰 이름을 리턴하면,
뷰 리졸버는 "/WEB-INF/view/kbh.jsp"라는 위치의 JSP 뷰를 참고해서 모델을 이용하여 페이지를 만듬
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/view"/>
<property name="suffix" value=".jsp"/>
</bean>
-- UrlBasedViewResolver
tiles사용할 때 이용
페이지를 이어주는 페이지를 합치는 작업을 할 때 이것에 해당하는 페이지를 찾아주는 역할
'SPRING' 카테고리의 다른 글
[Spring] 서블릿 분리 & 환경설정 (0) | 2022.05.11 |
---|---|
[Spring] 오라클(Oracle) 연동 (Eclipse) (0) | 2022.05.11 |
[Spring] tiles 지시서 작성하기2 (와일드카드이용) (0) | 2022.05.11 |
[Spring] tiles 지시서 작성하기1 (Eclipse) (0) | 2022.05.11 |
[Spring] tiles 사용법 (Eclipse) (0) | 2022.05.11 |