진행순서
① 사용자로부터 요청이 들어오면 Interceptor를 지나 Action 에서 Business Logic을 수행 후
action mapping 에의해 result로 결과가 보내지게 된다.
② 이때 result 의 type="tiles" 로 설정하게 되면 Result에서는 web.xml에 설정한 Tiles Listener를 수행하고
WEB-INF 폴더 아래에 있는(web.xml 파일과 경로가 같은) tiles.xml(tiles의 설정이 들어있는 xml파일을 로딩한다.)
이름은 어떠한 것이라도 상관 없다
③ 그 결과를 다시 Interceptor에 전달하여 사용자로 결과를 보내주게 된다.
작업순서
1) Tiles Plug-in을 수행하기 위한 Library파일을 설정한다.
struts 2의 스펙에 있는 다음의 Library파일을 추가 한다.
commons-digester-1.8.jar : 플러그인을 사용하기 위해서 꼭 필요한, 플러그인을 이용하겠다고 정의해주는 Library
struts2-tiles-plugin-2.0.14.jar : 아래서부터는 tiles를 사용하기 위한 library
tiles-api-2.0.4.jar
tiles-core-2.0.4.jar
tiles-jsp-2.0.4.jar
2) web.xml 파일에 Tiles Listener를 설정한다.
<listener> <listener-class> org.apache.struts2.tiles.StrutsTilesListener </listener-class> </listener> |
3) Tiles의 설정이 들어있는 tiles.xml파일을 생성(파일의 이름은 아무거나 상관이 없으며 WEB-INF폴더 에 있어야 한다.)
<?xml version="1.0" encoding="EUC-KR" ?>
<!DOCTYPE tiles-definitions PUBLIC <tiles-definitions> |
template로 설정한 jsp페이지는 기본레이아웃이 되는, 즉 index 파일이라고 말할수 있다.
하위 정의로 부터 menu1일때는 상단에 선언한 index 에서 body부분만 다음과 같은 jsp페이지로 변경하겠다는 뜻이다.
4) action mapping을 수행한다.(tiles.xml이라는 파일에서 action mapping을 수행한다.)
<struts> <package name="tiles" namespace="/tiles" extends="struts-default, tiles-default"> <action name="index"> <result type="tiles">index</result> </action> <action name="menu1"> <result type="tiles">menu1</result> </action> <action name="menu2"> <result type="tiles">menu2</result> </action> </package> </struts> |
Tiles를 사용할 수 있다.
만약 주소창에 index.action으로 들어오면 action name="index" 가 수행한다.
그리고는 result type="tiles" 인것을 확인하고 tiles설정이 되어있는 곳으로가 줄쳐진 index라는 곳으로 이동한다.
즉 위의 index는 tiles설정이 들어가 있는 tiles.xml(web.xml과 같은 경로에 있는 tiles설정 파일)로 들어가
definition name="index" 인것을 찾아 들어가 실행 시킨다.
5) jsp의 레이아웃 설정(tiles에서 지원하는 tag library를 통해 jsp페이지 끼워 넣을 수 있다.)
<%@ taglib prefix="tiles" uri="http://tiles.apache.org/tags-tiles"%> <tiles:getAsString name="title" /> <tiles:insertAttribute name="header"/> |
즉 <put-attribute name="title" value="Struts2 Tiles Example"/>이기 때문에 결국 화면엔 "Struts2 Tiles Example" 이렇게 출력 된다.
<put-attribute name="header" value="/tiles/header.jsp"/>
이렇게 설정되어 있기 때문에 header.jsp가 입력이 된다.
출처 : http://javastore.tistory.com/