
'디핸컨모디뷰뷰디' 순서
클라이언트 요청 -> spring의 web.xml파일 실행 -> 디스패처 서블릿 모든 경로에서 실행
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<!-- spring mvc기반의 애너테이션 사용가능하게 한다. -->
<annotation-driven />
annotation driven으로 @requestmapping을 포함한 모든 어노테이션을 사용가능하게 한다.
handler mapping의 목적 -> 클라이언트의 요청 URL을 적절한 컨트롤러로 매핑하는 것
※) 여기서 컨트롤러는 핸들러라 한다.
즉 디스패처가 componentscan을 통해 requestmapping 애너테이션들을 찾아내서 controller(핸들러)로 매핑한다 라는 의미가 핸들러 매핑

위는 maincontroller인데 코드를 보면 ModelAndView객체에 viewName과 데이터를 담아서
반환 하는 것을 볼 수 있다.
결론적으로 컨트롤러(핸들러)가 반환값을 알아서 디스패처의 viewresolver로 반환한다. (spring에 의해서)
<!-- 3.TilesConfigurer은 definition이라는 속성을 이용해 tiles파일 위치를 지정해준다. 타일즈의 설정파일들의
위치를 지정한다. definitions는 타일즈의 정의파일들의 위치를 나타낸다. -->
<beans:bean id="tilesConfigurer"
class="org.springframework.web.servlet.view.tiles2.TilesConfigurer">
<beans:property name="definitions">
<beans:list>
<beans:value>classpath:tiles/*.xml</beans:value>
</beans:list>
</beans:property>
<!-- 타일즈 뷰에서 고정된 viewpage의 데이터를 가져와 빈으로 만들어 필요할때 효과적으로 불러올 수 있다. -->
<beans:property name="preparerFactoryClass"
value="org.springframework.web.servlet.view.tiles2.SpringBeanPreparerFactory" />
</beans:bean>
<!-- UrlBasedViewResolver클래스는 URL기반의 뷰를 해석하고 Rendering해준다. (viewResolver
: 내보낼 view를 결정하고 해당 뷰를 렌더링한다.) TilewView : 뷰 리졸버가 타일뷰를 사용하겠다. 쉽게 말해 URL기반의
뷰 리졸버가 URL을 사용하여 타일즈뷰를 사용하고 나타내겠다는 말이다. -->
<beans:bean id="viewResolver"
class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<beans:property name="viewClass"
value="org.springframework.web.servlet.view.tiles2.TilesView" />
</beans:bean>
viewResolver 호출 위 코드에서는 url기반으로 뷰를 해석한다. -> 컨트롤러에서 반환된 논리적 뷰 이름을 물리적 뷰 경로로 변환하여 어떤 뷰를 사용할지 결정한다.
tilesConfigurer는 -> tile 뷰를 사용하겠다 라는 말이다.
정리)
아 뷰리졸버가 tileView를 렌더링하는데 tileconfigurer 빈을 참고해서 렌더링한다
이렇게 렌더링 된 html을 디스패처가 받아 client에게 응답으로 전송한다. 이 부분은
스프링이 자동으로 처리하는 부분이다.