JSP 템플릿 프레임워크인 tiles 사용법 까먹기전에 적어 두어야 겠다.
1. Struts 설치
5. tiles-defs.xml 생성 및 설정
눈여겨 볼것은 <%@ taglib uri="/WEB-INF/tld/struts-tiles.tld" prefix="tiles"%> 요놈인데
요놈이 tiles를 사용할수있게 해주는 태그이다 2번에서 설명했다.
중간 중간에 보면 <tiles:~~~ 로 시작하는 태그가 있다.
소스를 보면 알겠지만 attribute 속성에 적힌 문자열이 tiles-defs.xml 파일의 put태그 속성이름에 해당하게 되며
put 태그 value값의 페이지를 include 한다고 보면 된다.
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 란 놈을 찾을수 있다.
압축을 풀게되면 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 를 아래와 같이 명시 해주어야 한다.
위 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 태그에서 맵핑을 해주어야 한다.
위 설정은 URL 에서 main.do 로 요청이 들어왔을때 tiles-defs.xml 에서
definition 태그의 name속성이 .main1 이라는 것을 참조해 페이지를 구성하라는 뜻이다.
struts-config.xml 과 tiles-defs.xml 을 연결 시켜준다고 보면 되겠다.
<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
본인은 그냥 만들었다..ㅡ;;;
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 태그의 속성들을 참조할수있게 해주는것이다.
하게 된다. 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 파일을 생성 하여 작성하였다.
본인은 위 예제에적힌 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 를 실행해 보면
페이지를 확인할수가 있다.
각 페이지 마다 페이지의 내용을 알아볼수있게 입력한후 http://localhost:xxxx/xxx/main.do 를 실행해 보면
페이지를 확인할수가 있다.