쉽게 쉽게

spring tiles 사용법 본문

개발공부/Spring

spring tiles 사용법

곱마2 2023. 6. 25. 21:30
반응형

1. Spring tiles란?

Spring Tiles는 Spring Framework와 함께 사용되는 템플릿 엔진으로, 웹 애플리케이션에서 일관된 레이아웃을 적용하기 위해 사용된다.

Spring Tiles를 사용하면 jsp의 상단, 사이드, 메인, 하단 등에 간편하게 레이아웃을 적용시켜 줄 수 있다.

즉 페이지들을 일괄관리 할 수 있고, 공통으로 사용하는 부분들을 매번 등록을 따로 해주지 않아도 되기 때문에 편리하다.

 

Spring Tiles의 사용법

  1. 의존성 설정: Maven 등을 사용하여 Spring Tiles의 의존성을 프로젝트에 추가
  2. Tiles 설정 파일 작성: Tiles 설정 파일을 작성하여 각각의 타일과 레이아웃을 정의
  3. Tiles 사용 설정: 컨트롤러에서 타일을 사용하도록 설정 주로 TilesConfigurer를 사용하여 Tiles 설정 파일을 등록하고, ViewResolver를 설정하여 타일 기반의 뷰를 처리
  4. 뷰 작성: 타일 기반의 뷰 템플릿을 작성, 각 타일의 이름을 사용하여 타일을 참조하고 조합하여 전체 웹 페이지를 구성

2.  예시

1. 의존성 설정

pom.xml에 tiles 추가

<properties>
	<org.apache.tiles-version>3.0.3</org.apache.tiles-version>
</properties>

<!-- Tiles -->
<dependency>
	<groupId>org.apache.tiles</groupId>
	<artifactId>tiles-core</artifactId>
	<version>${org.apache.tiles-version}</version>
</dependency>

<dependency>
	<groupId>org.apache.tiles</groupId>
	<artifactId>tiles-servlet</artifactId>
	<version>${org.apache.tiles-version}</version>
</dependency>

<dependency>
          <groupId>org.apache.tiles</groupId>
          <artifactId>tiles-jsp</artifactId>
          <version>${org.apache.tiles-version}</version>
      </dependency>

<dependency>
	<groupId>org.apache.tiles</groupId>
	<artifactId>tiles-extras</artifactId>
	<version>${org.apache.tiles-version}</version>
</dependency>

2. Tiles 설정 파일 작성

tiles.xml에 작성

<definition name="layout" template="/WEB-INF/views/tiles/layout.jsp">에는 기본으로 사용될 jsp 화면을 설정

<!-- layout.jsp -->
<html>
<head>
  <!-- 헤더 타이틀 등의 공통 요소 정의 -->
</head>
<body>
  <div id="header">
    <!-- 헤더 내용 정의 -->
  </div>
  <div id="body">
    <!-- 동적으로 삽입될 컨텐츠 정의 -->
  </div>
  <div id="footer">
    <!-- 푸터 내용 정의 -->
  </div>
</body>
</html>

layout.jsp에는 사용할 요소(header 등)를 포함하고 있어야 한다.

template.jsp가 공백이거나 내용이 없는 경우, 해당 템플릿을 사용하는 <definition>에서 Tiles 속성을 정의할 때는 빈 내용으로 처리

하지만 layout.jsp가 빈화면이더라도 headerTemplate.jsp가 정의되어 있다면 headerTemplate.jsp화면을 렌더링한다.

즉 1차적으로 기본 화면(layout.jsp)을 살펴보고 2차적으로 나머지 화면이 있는지 확인 후 알맞게 렌더링 한다.

 

<tiles-definitions>
	<!-- main layout -->
	<definition name="layout" template="/WEB-INF/views/tiles/layout.jsp">
		<put-attribute name="header" value="/WEB-INF/views/tiles/headerTemplate.jsp" />
		<put-attribute name="left" value="/WEB-INF/views/tiles/sidebarTemplate.jsp" />
		<put-attribute name="body" value="" />
		<put-attribute name="foot" value="/WEB-INF/views/tiles/footerTemplate.jsp" />
	</definition>
</tiles-definitions>

3. Tiles 사용 설정

servlet-context.xml에 View Resolver는 JSP 파일의 경로 및 확장자 등을 관리할 수 있다.

여기에 tilesViewResolver와 tilesConfigurer를 추가하여 tiles 파일의 관리와 tiles.xml 설정을 사용할 수 있도록 관리한다.

<beans:bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <beans:property name="prefix" value="/WEB-INF/views/" />
    <beans:property name="suffix" value=".jsp" />
    <beans:property name="order" value="2" />
</beans:bean>

<!-- tiles 설정 -->
<beans:bean id="tilesViewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
    <beans:property name="viewClass" value="org.springframework.web.servlet.view.tiles3.TilesView" />
    <beans:property name="order" value="1" />
</beans:bean>
 
<beans:bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles3.TilesConfigurer">
    <beans:property name="definitions">
        <beans:list>
            <beans:value>/WEB-INF/spring/tiles.xml</beans:value>
        </beans:list>
    </beans:property>
</beans:bean>

4. jsp 작성

<tiles:insertAttribute name="" /> 안에 설정파일에서 설정했던 이름 삽입해서 사용

 

<%@ taglib prefix="tiles" uri="http://tiles.apache.org/tags-tiles" %>

<html>
<body>
    <tiles:insertAttribute name="header" />
    
    <div>
        <tiles:insertAttribute name="content" />
    </div>
    
    <tiles:insertAttribute name="footer" />
</body>
</html>

https://myhappyman.tistory.com/81

 

Spring - 타일즈(Tiles) 적용하기

스프링 타일즈란 뷰페이지의 jsp들을 상단, 사이드, 메인, 하단을 설정 상태로 include 처리해주는 구조의 템플릿을 말합니다. 페이지들을 일괄관리 할 수 있고, 공통사용하는 부분들을 매번 등록

myhappyman.tistory.com

잘못된 내용이 있다면 지적부탁드립니다. 방문해주셔서 감사합니다.

 

 

 

반응형