back end/Sitemesh, Tiles

spring boot + sitemesh

노루아부지 2019. 9. 2. 09:55

1. pom.xml에 sitemesh 추가

<!-- Sitemesh3 -->
<dependency>
	<groupId>org.sitemesh</groupId>
	<artifactId>sitemesh</artifactId>
	<version>3.0.1</version>
</dependency>

 

2. WEB-INF 밑에 decorator 파일 생성

   (저는 WEB-INF/decorator/decoratorList.jsp로 생성했습니다.)

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>

<!DOCTYPE html>
<html>
<head>
	<title>
		<sitemesh:write property='title' />
	</title>
	<meta http-equiv="X-UA-Compatible" content="IE=edge" />
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<sitemesh:write property='head' />
</head>
<body>
	<div>데코레이터 확인용</div>
	<sitemesh:write property='body' />
</body>
</html>

 

3. src/main/java 밑에 SitemeshFilter 클래스 생성

import org.sitemesh.builder.SiteMeshFilterBuilder;
import org.sitemesh.config.ConfigurableSiteMeshFilter;

public class SitemeshFilter extends ConfigurableSiteMeshFilter {
	@Override
	protected void applyCustomConfiguration(SiteMeshFilterBuilder builder) {
		builder.addDecoratorPath("/*", "/WEB-INF/decorator/decoratorList.jsp");
        // 첫번째 매개변수 : 주소 ( 보통 controller의 requestMapping의 value 값 )
		//			* 등을 사용하여 다양하게 URL의 패턴으로 사용 가능.
		// 			본 예시의 첫번째 매개변수의 값은 모든 경로를 의미
        // 두번째 매개변수 : decorator 파일 경로
	}
}

 

4. src/main/java 밑에 Configuration 클래스를 생성하여 Filter에 SitemeshFilter 클래스를 지정

import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class ServletFilterConfig {
	@Bean
	public FilterRegistrationBean siteMeshFilter() {
		FilterRegistrationBean filter = new FilterRegistrationBean();
		filter.setFilter(new SitemeshFilter()); // 위에서 만든 SitemeshFilter 클래스 지정
		return filter;
	}
}

 

여기까지 진행하고 spring boot를 실행하면 decorator가 적용됩니다.

728x90

'back end > Sitemesh, Tiles' 카테고리의 다른 글

sitemesh & freemarker setting  (0) 2019.07.24
loading