JSP 템플릿 프레임워크인 tiles 사용법 까먹기전에 적어 두어야 겠다.

1. Struts 설치

JSP 프레임워크 struts를 설치하면 tiles 가 포함 되어있다. struts 설치는 알아서 검색 하면됨.
본인은 셋팅의 귀차니즘으로 struts-blank~~.war 를 간단히 import 하였다..ㅡㅡ;

2. struts-tiles.tld 사용

struts를 설치하고나면 WEB-INF/lib 폴더에  struts-tiles-1.3.xx.jar 란 놈이 있는데 
압축을 풀게되면   META-INF/TLD 폴더에서 struts-tiles.tld 란 놈을 찾을수 있다.
요놈이 tiles를 사용할수있게 해주는 태그라이브러리이며 요놈을 html 또는 jsp 페이지에서 사용하기 위해선
각 페이지에 tld 선언을 해주어야 한다.
<%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles"%>
요런식으로 말이다.
위와 같이 선언 하게되면 <tiles:~~~로 시작하는 태그를 사용할수 있다.
일단 사용법은 이러하고....사용하기전에 WEB-INF/tld 라는 폴더를 만들어서 거기에 복사하자.

3. web.xml 설정

 환경설정 파일인 web.xml 에서 tiles 를 사용하겠다는 설정을 하여야하는데
 위 2번에서 설치한 struts-tails.tld 를 아래와 같이 명시 해주어야 한다.
<taglib>
     <taglib-uri>/WEB-INF/tld/struts-tiles.tld</taglib-uri>
     <taglib-location>/WEB-INF/tld/struts-tiles.tld</taglib-location>
</taglib>
4. struts-config.xml 설정

action 태그에서 맵핑을 해주어야 한다.
<action path="/main1" forward=".main1" />
<action path="/menu1" forward=".submenu1" />
<action path="/menu2" forward=".submenu2" />
* 본인은 struts URL 설정에서 *.do로 해두었다.

위 설정은 URL 에서 main.do 로 요청이 들어왔을때 tiles-defs.xml 에서
definition 태그의 name속성이 .main1 이라는 것을 참조해 페이지를 구성하라는 뜻이다.
struts-config.xml 과 tiles-defs.xml 을 연결 시켜준다고 보면 되겠다.

5. tiles-defs.xml 생성 및 설정

tiles-defs.xml 파일은 따로 있는건지 만들어야 하는건지 파일 압축 풀면 나오는건지 확실히는 모르겠다
본인은 그냥 만들었다..ㅡ;;;

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=".main1" path="/Layout.jsp">
      <put name="title" value="안냐세요" />
      <put name="header" value="/header.jsp" />
      <put name="menu" value="/menu.jsp" />
      <put name="footer" value="/footer.jsp" />
      <put name="body" value="/body.jsp" />
    </definition>
    <definition name=".submenu1" extends=".main1">
                  <put name="body" value="menu1.jsp" />
    </definition>
    <definition name=".submenu2" extends=".main1">
                  <put name="body" value="menu2.jsp" />
    </definition>
</tiles-definitions>

 
 
위 4번의 struts-config.xml 에서 설정한 action 태그의 forward 속성과 맵핑 되는것을 찾아 페이지를 구성
하게 된다. put 태그의 value 속성 문자열은 request 로 받을수있는 속성이 되며 url은 페이지로 사용할수가 있다.

정리를 하면 main.do 라는 요청이 왔을때 struts-config.xml 에서 main에 해당하는 action을 찾게 되며
main의 forward 속성을 참조해 tiles-defs.xml 파일 definition 태그의 name 속성과 맵핑되는것을 찾아서
path 속성의 url로 이동하게된다.

위 예제를 예로 들면 .main1 을 요청하게되는데 path 속성인 /Layout.jsp 로 이동하게되며
Layout.jsp 페이지에서 위의 서브 파라미터인 put 태그의 속성들을 참조할수있게 해주는것이다.


6. Layout 페이지 생성
5번까지 설정부분이었다. 이제 테스트를 해보아야 하는데
본인은 위 예제에적힌 Layout.jsp 파일을 생성 하여 작성하였다.

<%@ page language="java" contentType="text/html; charset=EUC-KR"  pageEncoding="EUC-KR"%>
<%@ taglib uri="/WEB-INF/tld/struts-tiles.tld" prefix="tiles"%>


<!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=EUC-KR">

<title>Insert title here</title>

</head>

<body>
      <h1><tiles:getAsString name="title" /></h1>
      <table border="1" width="100%">
         <tr>
            <td colspan="2"><tiles:insert attribute="header" /></td>
       </tr>
       <tr>
           <td width="140"><tiles:insert attribute="menu" /></td>
           <td><tiles:insert attribute="body" /></td>
       </tr>
        <tr>
           <td colspan="2"><tiles:insert attribute="footer" /></td>
       </tr>
       </table>
</body>
</html>


눈여겨 볼것은 <%@ taglib uri="/WEB-INF/tld/struts-tiles.tld" prefix="tiles"%> 요놈인데
요놈이 tiles를 사용할수있게 해주는 태그이다 2번에서 설명했다.

중간 중간에 보면 <tiles:~~~ 로 시작하는 태그가 있다.
소스를 보면 알겠지만 attribute 속성에 적힌 문자열이 tiles-defs.xml 파일의 put태그 속성이름에 해당하게 되며
put 태그 value값의  페이지를 include 한다고 보면 된다.



# 마무리로 위예제를 테스트 해볼려면 tiles-defs.xml  에 설정된 파일이름들을 생성해서
각 페이지 마다 페이지의 내용을 알아볼수있게 입력한후 http://localhost:xxxx/xxx/main.do 를 실행해 보면
페이지를 확인할수가 있다.

 

+ Recent posts