본문 바로가기

spring/Web

스프링에서 tiles 사용하기

url 요청이 들어오면 web.xml에서 설정한 파일로 요청을 넘긴다.


아래 예제에서는 mvc-config.xml 파일이 요청을 넘겨 받고


맵핑된 컨트롤러에서 처리되어 리턴된 뷰 요청을 


타일즈 설정에 의하여 처리한다.


url 요청 -> web.xml -> DispatcherServlet 설정파일 -> 컨트롤러 -> 뷰 리턴 -> UrlBasedViewResolver -> TilesConfigurer 설정파일에 의하여 뷰 처리


================================================================================================================================================

web.xml


<?xml version="1.0" encoding="ISO-8859-1"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

         xmlns="http://java.sun.com/xml/ns/javaee"

         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">

    <display-name>s_mvc6_tiles</display-name>

    

   <!--

- Location of the XML file that defines the root application context.

- Applied by ContextLoaderListener.

-->

    <context-param>

        <param-name>contextConfigLocation</param-name>

        <param-value>classpath:spring/application-config.xml</param-value>

    </context-param>


    <listener>

        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

    </listener>

    

    

    <!--

- Servlet that dispatches request to registered handlers (Controller implementations).

-->

    <servlet>

        <servlet-name>dispatcherServlet</servlet-name>

        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

        <init-param>

            <param-name>contextConfigLocation</param-name>

            <param-value>/WEB-INF/mvc-config.xml</param-value>

        </init-param>

        <load-on-startup>1</load-on-startup>

    </servlet>


    <servlet-mapping>

        <servlet-name>dispatcherServlet</servlet-name>

        <url-pattern>/</url-pattern>

    </servlet-mapping>


</web-app>


================================================================================================================================================

 DispatcherServlet 설정파일( mvc-config.xml )


<?xml version="1.0" encoding="UTF-8"?>


<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context"

xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd

http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd

http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">


<!-- 

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">

       <property name="prefix" value="/WEB-INF/view/"/>

       <property name="suffix" value=".jsp"/>

</bean> 

-->

<mvc:annotation-driven />

 

<context:component-scan base-package="pack" />

<bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">

<property name="viewClass" value="org.springframework.web.servlet.view.tiles3.TilesView" />

<property name="order" value="1" />

</bean>

<bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles3.TilesConfigurer">

<property name="definitions">

<list>

<value>/WEB-INF/tiles.xml</value>

</list>

</property>

</bean>


</beans>


================================================================================================================================================

TilesConfigurer  ( tiles.xml )


<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE tiles-definitions PUBLIC "-//Apache Software Foundation//DTD Tiles Configuration 3.0//EN" "http://tiles.apache.org/dtds/tiles-config_3_0.dtd">

<tiles-definitions>

<definition name="mainTemplate" template="/WEB-INF/view/layout.jsp">

<put-attribute name="header" value="/WEB-INF/view/header.jsp"/>

<put-attribute name="menu" value="/WEB-INF/view/menu.jsp"/>

<put-attribute name="content" value="" />

<put-attribute name="footer" value="/WEB-INF/view/footer.jsp"/>

</definition>

<!-- name은 뷰이름으로 맵핑된다. -->

<definition name="hello" extends="mainTemplate">

<put-attribute name="title" value="hello화면" />

<put-attribute name="content" value="/WEB-INF/view/hello.jsp" />

</definition>

</tiles-definitions>