- Tiles framework 기본 구성2021년 12월 20일 17시 42분 48초에 업로드 된 글입니다.작성자: 원2728x90반응형
Spring 프로젝트 임.
1. pom.xml에 maven 의존성을 추가 해준다.
<!-- tiles 버전 명시 --> <org.apache.tiles-version>3.0.8</org.apache.tiles-version>
<!-- Tiles Framework 관련 version 은 위에 명시해둠 --> <dependency> <groupId>org.apache.tiles</groupId> <artifactId>tiles-servlet</artifactId> <version>${org.apache.tiles-version}</version> </dependency> <dependency> <groupId>org.apache.tiles</groupId> <artifactId>tiles-api</artifactId> <version>${org.apache.tiles-version}</version> </dependency> <dependency> <groupId>org.apache.tiles</groupId> <artifactId>tiles-jsp</artifactId> <version>${org.apache.tiles-version}</version> </dependency> <dependency> <groupId>org.apache.tiles</groupId> <artifactId>tiles-core</artifactId> <version>${org.apache.tiles-version}</version> </dependency> <dependency> <groupId>org.apache.tiles</groupId> <artifactId>tiles-template</artifactId> <version>${org.apache.tiles-version}</version> </dependency> <dependency> <groupId>org.apache.tiles</groupId> <artifactId>tiles-extras</artifactId> <version>${org.apache.tiles-version}</version> </dependency>
2.dispatcher-servlet.xml 설정
노란박스처럼 설정을 해준 뒤 , 빨간 박스안의 order 의 순서를 변경해야한다.
order = "value" 의 값이 낮을수록 우선 순위로 읽어 들이는 것을 고려 하기 때문에
Tiles 의 order value 값이 낮을 수록 Tiles의 구성을 먼저 읽어들인다.
<!-- Tiles 우선순위를 첫번째로 고려하도록 변경 --> <bean class="org.springframework.web.servlet.view.UrlBasedViewResolver" id="tilesViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.tiles3.TilesView"/> <property name="order" value="1"/> </bean> <!-- Tiles 관련 설정 --> <bean class="org.springframework.web.servlet.view.tiles3.TilesConfigurer" id="tilesConfigurer"> <property name="definitions"> <list> <value>/WEB-INF/tiles/tiles.xml</value> </list> </property> </bean>
3. tiles.xml 구성
위의 dispatcher-servelt.xml 에 설정한 <list>안의 value 위치에 있는 xml 을 만들고 설정을 하자 ( 주황색 박스 )
난 이렇게 구성해 뒀다.
(1) (2) (3) (3)은 따라하지 않아도 될거 같다 잠깐 오류생김;
<?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"> <!-- 기본적인 템플릿 생성 header, body, footer 를 가진 tamplate.jsp 라는 기본 레이아웃을 정의 이 정의된 레이아웃의 name속성인 base를 상속하여 추가적으로 여러 tiles들을 만들수 있다. --> <tiles-definitions> <!-- name과 template의 value는 내가 정하는 것 --> <definition name="base" template="/WEB-INF/tiles/template.jsp"> <put-attribute name="header" value="/WEB-INF/tiles/header.jsp"/> <put-attribute name="left" value="/WEB-INF/tiles/left.jsp"/> <put-attribute name="body" value=""/> <put-attribute name="right" value="/WEB-INF/tiles/right.jsp"/> <put-attribute name="footer" value="/WEB-INF/tiles/footer.jsp"/> </definition> <!-- 메뉴표시 base를 상속 받은 것. body 부분만 설정한 경로대로 갈아 끼우고, 나머지 header, footer는 base의 형식대로 상속받아 오는 것. --> <definition name="*.page" extends="base"> <put-attribute name="body" value="/WEB-INF/views/{1}.jsp"/> </definition> <definition name="*/*.page" extends="base"> <put-attribute name="body" value="/WEB-INF/views/{1}/{2}.jsp"/> </definition> <definition name="*/*/*.page" extends="base"> <put-attribute name="body" value="/WEB-INF/views/{1}/{2}/{3}.jsp"/> </definition> <definition name="*/*/*/*.page" extends="base"> <put-attribute name="body" value="/WEB-INF/views/{1}/{2}/{3}/{4}.jsp"/> </definition> <definition name="*/*/*/*/*.page" extends="base"> <put-attribute name="body" value="/WEB-INF/views/{1}/{2}/{3}/{4}/{5}.jsp"/> </definition> <!-- 메뉴 미표시 페이지 중 로그인 페이지는 보통 header, footer 모두를 레이아웃으로 가지지 않는다. 다만, header에 js 라이브러리 등을 포함하고 있을 것이므로 이런 특정 경로의 jsp 파일들은 header만 상속박고 footer는 사용하지 않는 방식으로 할 수 있다. --> <definition name="baseEmpty" template="/WEB-INF/tiles/templateEmpty.jsp"> </definition> <definition name="*.part" template="baseEmpty"> <put-attribute name="body" value="/WEB-INF/views/{1}.jsp"/> </definition> <definition name="*/*.part" template="baseEmpty"> <put-attribute name="body" value="/WEB-INF/views/{1}/{2}.jsp"/> </definition> <definition name="*/*/*.part" template="baseEmpty"> <put-attribute name="body" value="/WEB-INF/views/{1}/{2}/{3}.jsp"/> </definition> <definition name="*/*/*/*.part" template="baseEmpty"> <put-attribute name="body" value="/WEB-INF/views/{1}/{2}/{3}/{4}.jsp"/> </definition> <definition name="*/*/*/*/*.part" template="baseEmpty"> <put-attribute name="body" value="/WEB-INF/views/{1}/{2}/{3}/{4}/{5}.jsp"/> </definition> </tiles-definitions>
4. tiles.xml 에 설정을 다 했으면, tiles directroy 를 만들어서 (아니면 원하는 자리에 설정해서 넣어줘도 무방)
각각의 해당하는 JSP 파일을 만들어 주자
header, footer, left(Menu), right(Menu), template, templateEmpty
template.jsp 임 이런식으로 원하는 식의 커스텀이 가능하고 원하는 곳에 tiles.xml에 설정한것을 <tiles: insertAttribute> 시켜서 넣어준다.
taglib 선언을 해주자 :: tiles 는 물론이거니와 jstl 이 없으면 안되는거 같다.
같이 선언해주자
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%-- tiles framework 선언부 --%> <%@ taglib prefix="tiles" uri="http://tiles.apache.org/tags-tiles" %>
또한 아래에 이런식으로 script도 적어두자 왜적는지는 모르겠던데 그냥 적으셈 ㅎㅎ;
<script type="text/javascript"> $(function () { }); </script>
***
참고용 body 부분만 긁어가거나 참고하자
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title><tiles:getAsString name="title" ignore="true" /></title> </head> <body> <table border="1" cellpadding="2" cellspacing="2" align="center"> <tr> <td height="20%" colspan="2"> <tiles:insert attribute="header" ignore="true" /> </td> </tr> <tr> <td width="20%" height="250"> <tiles:insert attribute="menu" /> </td> <td> <tiles:insert attribute="body" /> </td> </tr> <tr> <td height="20%" colspan="2"> <tiles:insert attribute="footer" /> </td> </tr> </table> </body> </html>
5. views에 test 할 jsp 하나를 만들고 컨트롤러에서 실행하자.
// body 부분 @RequestMapping(value = "/test2") public String test2() { return "/test2.page"; }
이렇게 하면 된다. ㅇㅇ
6. 결과
짠 완성 ㅇㅇ
구성이야 입맛대로 꾸미면 되니 알아서 하자.
참고사이트
https://dzone.com/tutorials/java/struts/struts-example/struts-tiles-example-1.html
Struts Tiles Tutorial - DZone
Tiles is used to create reusable presentation components. With Tiles, we first define a base layout with different sections after that we define which jsp page...
dzone.com
728x90반응형'Frameworks > Tiles framework' 카테고리의 다른 글
Tiles framework 기본 개념 (0) 2021.12.17 다음글이 없습니다.이전글이 없습니다.댓글