꾸준하게 기록하기
article thumbnail
Published 2021. 8. 2. 16:33
Tiles Backend/Spring

Tiles 란? 

웹 페이지의 header, footer 와 같이 모든 페이지에 반복적으로 사용되는 곳을 
한 곳에 모아 간편하게 관리가능하게 해줍니다.

 

 tiles 사용하기 

 

1. pom.xml 라이브러리 추가

<properties>
	<org.apache.tiles-version>3.0.8</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>

https://mvnrepository.com/search?q=tiles 에서 tiles 관련 라이브러리 4개 추가.

 

2. tiles.xml 설정

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE tiles-definitions PUBLIC
       "-//Apache Software Foundation//DTD Tiles Configuration 3.0//EN"
       "http://tiles.apache.org/dtds/tiles-config_3_0.dtd">

<tiles-definitions>
	

<!-- Master definition   -->    
  <!-- header, footer 가 존재하는 page -->
  <definition name="web.base.main" template="/WEB-INF/views/layout/allLayout.jsp">
    <put-attribute name="header" value="/WEB-INF/views/layout/header.jsp" />		
    <put-attribute name="body"   value="" />
    <put-attribute name="footer" value="/WEB-INF/views/layout/footer.jsp" />
  </definition>

  <!-- header, footer 없는 page -->
  <definition name="single.tiles" template="/WEB-INF/views/layout/singleLayout.jsp">
  	<put-attribute name="content"   value="" />
  </definition>
<!-- end Master definition   -->

<!-- body definitions   --> 
  <definition name="*.main" extends="web.base.main">	    
 	<put-attribute name="body" value="/WEB-INF/views/web/{1}.jsp" />
  </definition>	

  <definition name="*.single" extends="single.tiles">	    
  	<put-attribute name="content" value="/WEB-INF/views/{1}.jsp" />
  </definition>
<!-- end body definitions   --> 

</tiles-definitions>

 → body definitions 에 extends 와 master definition 에 name 은 같아야 한다.

     body definitions 에 name 에 지정한 값으로 Controller에서 사용

 

3.   BaseController.java 

public String getTiles(String tilesName) {
  String tiles = prefix + tilesName + ".main";
  logger.info("tiles: {}", tiles);
  return tiles;
}

public String getSingleTiles(String tilesName) {
  String tiles = prefix + tilesName + ".single";
  logger.info("tiles: {}", tiles);
  return tiles;
}

 → tiles 설정 내용은 여러 곳에서 사용하므로 따로 Controller에 만들어서 사용.

 

4. HomeController.java

public class HomeController extends BaseController {

  @RequestMapping(value = "/home", method = RequestMethod.GET)
  public String indexPage(HttpServletRequest request, HttpServletResponse response, Model model) {

    return getTiles("mypage/home");
  }

}

→ return 에 사용할 tiles 형식 메소드 불러와서 사용. 

    매개변수로는 실행할 jsp 위치 와 jsp 명 기재 

728x90
profile

꾸준하게 기록하기

@:_:

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!