JAVA/코딩

Tiles 란?

으악꿈 2021. 2. 18. 14:03
728x90
  • 웹 페이지 상단, 하단, 메뉴와 같은 반복적으로 사용되는 부분들에 대한 정보를 모아 둔 프레임워크.
  • 레이아웃을 위한 단순하면서 편리한 기능 제공
  • 배우기 쉽고, 이용하기 쉬움.
  • 공통된 레이아웃을 유지하므로 수정이 용이.

 

※ JSP include와의 차이 ?

  • JSP include는 페이지 내에 동일한 레이아웃 정보가 들어가 있어 전체적인 레이아웃을 변경할 경우 모든 페이지를 수정해야 함.
    ex) 50개의 페이지에 상단 메뉴가 include 되어있을 경우, 페이지 명이 바뀌면 50개 파일을 전부 수정해야 함.
  • Tiles는 설정파일만 변경해주면 됨.

 

Tiles 구성

1. Template

 1) 페이지 레이아웃을 의미

 2) 페이지의 기본 골격을 구성

 3) 다른 템플릿을 이용하여 계층화 가능

 

2. Attribute

 1) 템플릿의 빈 공간을 채우기 위해 사용되는 정보

  • string : 직접 출력할 문자열 등
  • template : 전체 레이아웃의 일부분 레이아웃을 기술한 jsp파일
  • definition : 페이지 구조(template)와 레이아웃을 채울 정보(Attribute)가 같이 정의된 페이지

3. Definition

 1) 사용자에게 제공되는 TemplateAttribute들을 연결

 2) 보통 하나의 Template과 해당 Template에 채워질 전체 또는 일부의 Attribute로 구성됨.

 

 

Tiles.xml ( 레이아웃 설정 )

<!-- 기본 레이아웃 설정 -->
<definition name="test" template="WEB-INF/jsp/layout/test_layout.jsp">
    <put-attribute name="head" value="WEB-INF/jsp/common/head.jsp" />
    <put-attribute name="body" value="WEB-INF/jsp/common/body.jsp" />
</definition>

<!-- 기본 레이아웃을 상속받은 URL 호출시 적용 -->
<definition name="/test" extends="test">
    <put-attribute name="head" value="WEB-INF/jsp/common/head.jsp" />
    <put-attribute name="body" value="WEB-INF/jsp/test/{1}.jsp" />
</definition>

 

레이아웃 구조 ( test_layout.jsp )

<html>
<head>
   <tiles:insertAttribute name="head" />
</head>
<body>
   <tiles:insertAttribute name="body" />
</body>
</html>

 

컨트롤러 구조

@Controller
@RequestMapping("/test")
public class Test{

    @RequestMapping("/hello.do")  
    public void hello(){
    	return "test/hello.jsp";
    }
}
728x90