-
Tiles 흐름파악하기프로그래밍/Tiles 2019. 8. 2. 17:27반응형
1. Tiles란?
일반 홈페이지에서 include, import 하던 반복적인 jsp(화면) 등의 반복적인 부분을 한 곳에서 깔끔하게 관리할 수 있게 도와주는 템플릿 프레임워크 입니다.
참조 url:
https://its-easy.tistory.com/13
참조url에서 해당 url, gradle plugin에 Tiles을 bulid하기
2. Tiles.xml: 타일즈 구조(프레임) 만드는 곳
<tiles-definitions> <!-- (1) 레이아웃을 적용하지않는화면--> <definition name="baseEmpty" template="/WEB-INF/views/template/baseEmpty.jsp"> </definition> <!-- (1) 레이아웃 미적용 --> <definition name="*.part" extends="baseEmpty"> <put-attribute name="body" value="/WEB-INF/views/login/{1}.jsp" /> </definition> <definition name="*/*.part" extends="baseEmpty"> <put-attribute name="body" value="/WEB-INF/views/login/{1}/{2}.jsp" /> </definition> <definition name="*/*/*.part" extends="baseEmpty"> <put-attribute name="body" value="/WEB-INF/views/login/{1}/{2}/{3}.jsp" /> </definition> <!-- (2) 레이아웃을 적용하는화면--> <definition name="base" template="/WEB-INF/views/template/baseLayout.jsp"> <put-attribute name="title" value="" /> <put-attribute name="common" value="/WEB-INF/views/template/common.jsp" /> <put-attribute name="header" value="/WEB-INF/views/template/header.jsp" /> <put-attribute name="menu" value="" /> <put-attribute name="footer" value="/WEB-INF/views/template/footer.jsp" /> </definition> <!-- (2) 레이아웃 적용 --> <definition name="*.page" extends="base"> <put-attribute name="body" value="/WEB-INF/views/template/{1}.jsp" /> </definition> <definition name="*/*.page" extends="base"> <put-attribute name="body" value="/WEB-INF/views/{1}/{2}.jsp" /> </definition> <definition name="*/*/*.page" extends="base"> <put-attribute name="body" value="/WEB-INF/views/{1}/{2}/{3}.jsp" /> </definition> </tiles-definitions>
(1)레이아웃 적용하지 않는 화면(Tiles미적용)
**Tiles미적용 화면은 보통 로그인화면, layout이 굳이 필요하지 않는 화면을 만들때 사용합니다.
put-attribute의 경로에는 *(에스테리크) 를 {1} 에 넣어줄수있게 됩니다
즉 /WEB-INF/jsp/login/login.jsp 를 찾아들어가게 됩니다
컨트롤러에서 return 값으로 에스테리크(jsp명).part해주면 해당 xml을 타게됩니다.
(2)레이아웃 적용화면(Tiles적용)
Tiles적용하기 위해 보통 사용합니다.
크게 common(css, js 등), header, footer, title, menu 등 공통 include.jsp를 설정합니다.
사용하지않는 것들은 삭제해도 상관없고 value값을 ""비워놓으면 됩니다.
- put-attribute: 나중에 하나의 layout jsp에서 사용하기 위한 name을 지정하는 것.
- value: 사용할 jsp 풀네임을 작성
- definition name: Controller에서 사용할 name
레이아웃을 적용하건, 안적용하건 body값만 항상 바뀝니다.
3. Tiles 합치기(하나의 layout.jsp 생성)
<body> <h1>baseLayout.jsp</h1> <tiles:insertAttribute name="common"/> <tiles:insertAttribute name="header"/> <tiles:insertAttribute name="body"/> <tiles:insertAttribute name="footer"/> </body>
2에서 만든 tile들을 합치는 곳입니다.
baseLayout.jsp(가제)를 생성해서 위에서만든 put-attribute에서 지정한 name들을 이곳에서 뿌려줍니다.
insertAttribute name = put-attribute
4. Controller
Controller return값-> Tiles.xml에서 설정한 definition name을 끝에 적어줍니다.
ex) return "layoutTest.page";
layoutTest(Tiles body jsp name).page(Tiles.xml에서 설정한 definition name)
Tiles를 적용한 화면과 적용하지 않는 화면 두가지의 경우였습니다.
이상입니다 !
반응형