- 타일즈(Tiles)란?
- 반복되는 부분들을 한 곳에서 관리할 수 있게 도와주는 템플릿 프레임워크이다.
- 웹페이지에서 흔히 보는 상단, 하단 메뉴 뿐만 아니라 측면과 메인부분을 작성
- 우리가 아는 JSP Include와 비슷하지만, Tiles는 레이아웃 템플릿 엔진으로 레이아웃을 구성하는데 좀 더 세분화되고 관리하기 쉬워 유지보수에 용이하다.
- tiles에는 상속 기능이 있기때문에, 기존의 값을 참조하여 그대로 쓸 수 있다.
- 2021.03.02 기준으로 3.0.8버전까지 나왔으며 더 이상 지원하지 않는다.
- 타일즈(Tiles) 3.0.8 최소 요구 사항
- JSTL 필수
- JDK 1.7 이상
- Servlet 2.5 이상( 2.4도 작동할 수 있음)
- JSP 2.1이상( 2.0도 작동할 수 있음)
- Spring 3.2이상
- 개발환경
- OS : WINDOWS 10 64bit
- 개발도구 : sts4 for Eclipse
- DBMS : Oracle 11g
- JDK : JAVA JDK 1.8
- 웹서버 : apache-tomcat 8.5.59
- SPRING VERSION : 5.2.9.RELEASE
<!-- Tiles --> <dependency> <groupId>org.apache.tiles</groupId> <artifactId>tiles-extras</artifactId> <version>3.0.8</version> </dependency> <dependency> <groupId>org.apache.tiles</groupId> <artifactId>tiles-servlet</artifactId> <version>3.0.8</version> </dependency> <dependency> <groupId>org.apache.tiles</groupId> <artifactId>tiles-jsp</artifactId> <version>3.0.8</version> </dependency>
<!-- order란 파라미터를 통해 tiles 작동 후 ViewResolver가 작동한다. --> <!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory --> <beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <beans:property name="prefix" value="/WEB-INF/views/" /> <beans:property name="suffix" value=".jsp" /> <beans:property name="order" value="2" /> 요청 -> 응답 -> 바로 View로 가던 기존과 다르게 Tiles를 거쳐 가기 때문에 order를 2 순위로 미루고 tiles 설정에서 1로 설정해줌 </beans:bean> <!-- Tiles --> <beans:bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles3.TilesConfigurer"> <beans:property name="definitions"> <beans:list> <beans:value>/WEB-INF/tiles/*-tiles.xml</beans:value> </beans:list> </beans:property> </beans:bean> <beans:bean id="tilesViewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver"> <beans:property name="viewClass" value="org.springframework.web.servlet.view.tiles3.TilesView" /> <beans:property name="order" value="1" /> </beans:bean> </beans:beans>
<?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 설정 --> <tiles-definitions> <!-- main layout --> <definition name="tiles-layout" template="/WEB-INF/views/tiles/index.jsp"> <put-attribute name="header" value="/WEB-INF/views/tiles/header.jsp" /> <put-attribute name="aside" value="/WEB-INF/views/tiles/aside.jsp" /> <put-attribute name="body" value="" /> <put-attribute name="footer" value="/WEB-INF/views/tiles/footer.jsp" /> </definition> <definition name="*/*" extends="tiles-layout"> <!-- name에서 볼 수 있듯이 */*는 아래 body의 value에서 1,2에 해당하며controller에서 1,2를 설정한다. --> <put-attribute name="body" value="/WEB-INF/views/{1}/{2}.jsp" /> <put-attribute name="title" value="tiles" /> </definition> <definition name="*.tiles" extends="tiles-layout"> <!-- name에서 볼 수 있듯이 */*는 아래 body의 value에서 1,2에 해당하며controller에서 1,2를 설정한다. --> <put-attribute name="body" value="/WEB-INF/views/{1}.jsp" /> <put-attribute name="title" value="tiles" /> </definition> </tiles-definitions>
tiles 설정 끝