스트럿츠 1에서는 사용할 수 있는 플러그인은 두개 밖에 없다. validator plug-in과 Tiles plug-in이 그 두가지 이다.
Tiles는 중복되는 웹페이지의 레이아웃을 간단한 설정파일을 통해 쉽게 설정할 수 있고 기존에 include로 페이지를 삽입했을때 보다 유지 보수성이 뛰어나다는 장점을 가지고 있다.
작업 순서
1) strust-tiles-1.3.10.jar파일을 라이브러리에 추가 시킨다.
2)tiles-defs.xml파일을 설정한다.
---------------------------------------------------------------------------------------
<?xml version="1.0" encoding="UTF-8" ?>
<!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=".layout-main"
path="/tilesModule/classicLayout.jsp"> <!-- 다음과 같은 path로 찾아 들어왔을때 웹페이지의 설정을 한다. 실제 적으로 classicLayout.jsp파일에서 tiles 테그라이브러리를 통해 include할때 아래의 이름으로 include 시키게 된다.-->
<put name="title" value="struts framework tiles examples"/> <!-- title이란이름으로 들어갈 value를 설정 -->
<put name="header" value="/tilesModule/header.jsp"/> <!-- jsp페이지에서 header란 이름으로 include했을때 다음의 jsp 페이지를 include 한다. -->
<put name="menu" value="/tilesModule/menu.jsp"/>
<put name="body" value="/tilesModule/body.jsp"/>
<put name="footer" value="/tilesModule/footer.jsp"/>
</definition>
<definition name=".layout-menu1" extends=".layout-main"> <!-- extends: original페이지의 definition 이름을 설정한다. -->
<put name="body" value="/tilesModule/body-menu1.jsp"/>
</definition>
<definition name=".layout-menu2" extends=".layout-main">
<put name="body" value="/tilesModule/body-menu2.jsp"/>
</definition>
</tiles-definitions>
---------------------------------------------------------------------------------------
3) layout page 생성
---------------------------------------------------------------------------------------
<%@page contentType="text/html; charset=euc-kr"%>
<%@ taglib prefix="tiles" uri="http://struts.apache.org/tags-tiles"%>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title><tiles:getAsString name="title" /></title>
<html:base/>
</head>
<body>
<h1><tiles:getAsString name="title"/></h1>
<table border=0 cellpadding=0 cellspacing=1 bgcolor="#a0a0a0" width="100%">
<tr valign="middle" bgcolor="#ffffff">
<td colspan=2><tiles:insert attribute="header"/></td>
</tr>
<tr height="400" bgcolor="#ffffff">
<td valign="top" width="15%">
<tiles:insert attribute="menu"/>
</td>
<td valign="middle" align="center">
<tiles:insert attribute="body"/>
</td>
</tr>
<tr bgcolor="#ffffff">
<td colspan=2><tiles:insert attribute="footer"/></td>
</tr>
</table>
</body>
</html>
---------------------------------------------------------------------------------------
위에 처럼 테그라이브러리를 선언하고 tiles 테그라이브러리로 다음의 페이지를 입력할 수 있다.
getAsString은 tiles-defs.xml파일에서 설정한 곳으로 들어가 name을 찾아 스트링을 입력한다.
insert는 tiles-defs.xml파일에서 선언한 jsp페이지를 삽입한다.
4) struts-tilesModule.xml에 plug-in설정
<plug-in className="org.apache.struts.tiles.TilesPlugin">
<set-property property="definitions-config" value="/WEB-INF/tiles-defs.xml” /> <!-- tiles-defs파일 위치 설정-->
<!-- 여기서 부터 옵션 -->
<set-property property="definitions-debug" value="2" /> <!--디버그 수위 value=0 사용안함 value = 2보통 value = 5 max -->
<set-property property="definitions-parser-details" value="2" />
<set-property property="definitions-parser-validate" value="true" />
</plug-in>
5) struts-tilesModule.xml 에 action-mapping설정
<action path="/main" forward=".layout-main" />
<action path="/menu1" forward=".layout-menu1" />
<action path="/menu2" forward=".layout-menu2" />
<controller processorClass="info.process.InfoRequestProcessor"/>
※ processortClass는 반드시 TilesRequestProcessor타입이어야 한다.
6) Request processor class생성
package com.myhome.info.processor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.tiles.TilesRequestProcessor;
public class InfoRequestProcessor extends TilesRequestProcessor{
@Override
/* Action으로 호출하기 전 처리할 내용을 기술하는 부분입니다. */
protected boolean processPreprocess(HttpServletRequest request,
HttpServletResponse response) {
//form parameter에 대한 인코딩을 수행한다.
boolean flag = false;
try{
request.setCharacterEncoding("euc-kr");
flag = true;
}catch(java.io.UnsupportedEncodingException uee){};
return flag;
}
}
request processor class를 tilesReqeustProcessor가 상속하고 있다.
'Framework > STRUTS 1' 카테고리의 다른 글
struts 1 - exception 처리 (0) | 2009.07.02 |
---|---|
struts 1 - validator (0) | 2009.07.01 |
struts 1 - File Uplod & File Download (0) | 2009.07.01 |
Struts 1 - 스트럿츠 1의 다양한 Action Class 들 part 3 (0) | 2009.06.30 |
Struts 1 - 스트럿츠 1의 다양한 Action Class 들 part 2 (0) | 2009.06.29 |