Java2EE Framework/Struts1.3

스트럿츠와 타일즈 컴포넌트 조합

본클라쓰 2010. 9. 10. 11:09

■ Tiles (타일즈) 컴포넌트

 

 타일즈 컴포넌트는 페이지의 모듈화를 위해 지원하는 컴포넌트이다. 스트럿츠는 Action 을 수행한 후 ActionForward 로 페이지를 전환하기 때문에 단순한 입력을 받아 Action을 수행한 후 출력페이지로 출력하는 단순한 페이지 전환에는 좋다. 하지만 메인 페이지를 유지한 채 콘텐츠의 내용만 바뀌는 식의 어플리케이션 제작에는 많은 제약이 있다. 이런 부분을 해결하기 위한 컴포넌트가 타일즈이다.

 

 타일즈는 설정파일을 통해 페이지 구성을 지정할 수 있다. ActionForward와 타일즈의 설정파일을 일치시켜 공통된 레이아웃 구성을 할 수 있게 도와준다.

  

 

Tiles (타일즈) 컴포넌트 사용방법

 

 스트럿츠 1.3 을 설치했다면 타일즈 컴포넌트를 사용할 수 있습니다. 우선 타일즈 사용을 지정합니다. WEB-INF/web.xml 파일에 타일즈 컴포넌트를 등록합니다.

 

 

<init-param>

    <param-name>chainConfig</param-name>

    <param-value>org/apache/struts/tiles/chain-config.xml</param-value>

</init-param>

 

 WEB-INF/web.xml 설정파일에 타일즈를 등록했다면 스트럿츠에서 타일즈를 등록합니다. struts-config.xml 설정 파일에서 타일즈를 등록합니다.

 

 

<plug-in className="org.apache.struts.tiles.TilesPlugin">

    <set-property property="definitions-config" value="/WEB-INF/config/tiles-defs.xml"/> 

</plug-in> 

 

 두껍게 작성된 부분이 타일즈의 설정 파일이 위치하는 경로 입니다. tiles-defs.xml 파일은 위에 지정한 위치에 있어야 합니다.

 

 

 

스트럿츠 struts-config.xml 과 타일즈 tiles-defs.xml 설정을 통해 Action과 보여주는 페이지 매칭하기

 

struts-config.xml 파일 설정

<action-mappings>
    <action path="/index" forward="default" />
    <action path="/act" type="co.kr.action.MainAction" validate="false" scope="request">
        <forward name="init" path="init"/>        
    </action>
</action-mappings>

 

tiles-defs.xml 파일 설정

<?xml version="1.0" encoding="euc-kr" ?>
<!DOCTYPE tiles-definitions PUBLIC "-//Apache Software Foundation//DTD Tiles Configuration 1.1//EN"
"http://jakarta.apache.org/struts/dtds/tiles-config_1_1.dtd">

<tiles-definitions>

 

    <definition name="default" path="/JSP/common/layout.jsp">
        <put name="header" value="/JSP/common/header.jsp"/>
        <put name="body" value="/JSP/common/init.jsp"/>
        <put name="footer" value="/JSP/common/footer.jsp"/>
    </definition>
 
    <definition name="init" extends="default">
        <put name="body" value="/JSP/common/test.jsp"/>
    </definition>
 
</tiles-definitions>

 

 두껍게 작성된 글자는 스트럿츠 설정파일의 forward와 타일즈의 설정파일이 매핑되는 부분을 지정한 것입니다. Action 을 수행한 후 forward시 타일즈의 설정 파일을 읽어 매핑을 통해 페이지를 보여줍니다. 또한 상속을 통해 바뀌는 부분만을 정의할 수 있습니다. 이런 방식으로 페이지의 구성을 유지한 채 내용영역의 부분을 변경할 수 있습니다.

 

 전체 레이아웃을 결정하는 페이지는 <definition name="default" path="/JSP/common/layout.jsp"> 부분입니다. 이 페이지는 다음과 같이 작성하면 해당 페이지에서 타일즈 설정 파일을 검색해 해당 페이지를 로딩합니다.

 

 

 

layout.jsp 페이지

<%@ page contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%>
<% request.setCharacterEncoding("euc-kr"); %>

<%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles" %>

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">


<html>


<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>타일즈 사용 예제</title>
</head>

 

<body>
 <div id="header"><tiles:insert attribute="header"/></div>
 <div id="content"><tiles:insert attribute="body"/></div>
 <div id="footer"><tiles:insert attribute="footer"/></div>
</body>

 

</html>