본문 바로가기
블로그 이미지

방문해 주셔서 감사합니다! 항상 행복하세요!

  
   - 문의사항은 메일 또는 댓글로 언제든 연락주세요.
   - "해줘","답 내놔" 같은 질문은 답변드리지 않습니다.
   - 메일주소 : lts06069@naver.com


Spring framework/Spring boot

스프링부트 타일즈, Springboot tiles, Spring boot 타일즈 적용

야근없는 행복한 삶을 위해 ~
by 마샤와 곰 2019. 12. 2.

 

스프링부트에서 타일즈 프레임워크를 사용하기 위해서는 당연히 라이브러리를 추가 해 주어야 한다.

버전은 자신에게 맞는, 또는 원하는 버전을 사용하자.

 

* maven 형식 추가

		<dependency>
			<groupId>org.apache.tiles</groupId>
			<artifactId>tiles-jsp</artifactId>
			<version>3.0.7</version>
		</dependency>

* gradle 형식 추가

compile group: 'org.apache.tiles', name: 'tiles-jsp', version: '3.7.0'

 

그리고나서..src폴더로 이동하자.

그리고 아래 사진처럼 WEB-INF 디렉토리까지 만들어주자.

webapp 디렉토리를 만들고, WEB-INF 디렉토리를 만들자.

 

기존의 프로젝트에는 src - main 까지 기본으로 만들어 져 있을 것 이다.

이에 webapp - WEB-INF 까지 디렉토리를 만들어 주어야 한다. (대소문자 주의!!!)

그리고 2개의 디렉토리를 더 만들어 주었다.

jsp는 jsp 파일들이 위치할 디렉토리이며, tiles 디렉토리는 타일즈 설정파일이 위치할 곳 이다.

타일즈 설정파일은 전자정부, 일반 spring프로젝트 등 기존에 사용하던 설정파일을 사용해도 상관없다.

 

해당 뷰 세팅이 정상적으로 동작하기 위해서 설정용 클래스를 만들어준다.

설정용 클래스는 메인메소드가 위치한 디렉토리에 생성하거나 원하는 패키지를 만든 뒤 위치시켜도 상관 없다.

그리고 기존에 설정용 클래스가 있다면 해당 클래스에 추가 하여도 상관 없다.

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.view.tiles3.TilesConfigurer;
import org.springframework.web.servlet.view.tiles3.TilesView;
import org.springframework.web.servlet.view.tiles3.TilesViewResolver;


@Configuration
public class Configurations implements WebMvcConfigurer {

    //뷰 세팅1
    @Bean
    public TilesConfigurer tilesConfigurer() {
        final TilesConfigurer configurer = new TilesConfigurer();
        
        //타일즈 설정파일이 위치하는 디렉토리+파일명
        configurer.setDefinitions(new String[]{"/WEB-INF/tiles/tiles.xml"});  
        configurer.setCheckRefresh(true);
        return configurer;
    }

    //뷰 세팅2
    @Bean
    public TilesViewResolver tilesViewResolver() {
        final TilesViewResolver tilesViewResolver = new TilesViewResolver();
        tilesViewResolver.setViewClass(TilesView.class);
        tilesViewResolver.setOrder(1);  //뷰 우선순위
        return tilesViewResolver;
    }

}

 

위 2개의 세팅이 전부이다.

핵심부분이 뷰 세팅1에 존재하는 타일즈 설정파일을 읽어오는 부분과, 뷰 세팅2에서 뷰 우선순위를 1번으로 주는 부분 이다.

해당 세팅까지 완료되고 나면 tiles 디렉토리에 원하는 타일즈 형식을 위치시키면 되며, jsp에 보여줄 jsp 파일을 위치시키면 된다.

 

간단하게 로그인과 게시판에 속한다는 것을 예를 들어 보면 아래처럼 꾸밀 수 있다.

위 예제에서 선언한 WEB-INF 밑에 tiles 디렉토리에 만들 타일즈 설정파일(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>
 
	<!--// main layout -->
	<definition name="mainTemplate" template="/WEB-INF/jsp/메인jsp파일.jsp">
		<put-attribute name="header" value="/WEB-INF/jsp/헤더jsp파일.jsp" />
		<put-attribute name="body" value="" />
	</definition>

	<!-- 로그인 요청에 대한 페이지 설정-->
	<definition name="login" extends="mainTemplate">
		<put-attribute name="body" value="/WEB-INF/jsp/로그인jsp파일.jsp" />
	</definition>

	<!-- 게시판 요청에 대한 페이지 설정-->
	<definition name="login" extends="mainTemplate">
		<put-attribute name="body" value="/WEB-INF/jsp/대쉬보드jsp파일.jsp" />
	</definition>
 
</tiles-definitions>

 

두개의 요청은 mainTemplate 아이디를 가진 레이아웃을 공통으로 사용한다.

body부분이 사용자의 요청에 따라 바뀌는 부분이며, header부분이 공통으로 사용 할 페이지 레이아웃이다.

이에 mainTemplate은 아래처럼 될 것 이다.

<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles"%>

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    <title>제목</title>
  </head>
  <body>
  	<tiles:insertAttribute name="mainHeader" />  <!--공통으로 쓸 메인헤더-->
  	<tiles:insertAttribute name="body"/>   <!--요청에의해 바뀌는 body부분-->
  </body>
</html>

 

jsp 상단에 선언한 디렉티브인 taglib 디렉티브는 반드시 선언이 되어야 한다.

하단부분에 보이는 곳이 앞서 타일즈 설정파일에서 선언한 내용이다.

mainHeader라는 이름을 가진 파일이 공통으로 사용되는 헤더부분이며, body부분이 사용자의 요청에 의해서 바뀌는 jsp 페이지를 의미 한다.

 

 

반응형
* 위 에니메이션은 Html의 캔버스(canvas)기반으로 동작하는 기능 입니다. Html 캔버스 튜토리얼 도 한번 살펴보세요~ :)
* 직접 만든 Html 캔버스 애니메이션 도 한번 살펴보세요~ :)

댓글