[Spring Boot] 스프링부트에서 sitemesh3 적용
스프링부트를 해본적이 없어서 이거 해결한다고 개고생했는데 해결되서 너무 다행이다 ㅠㅠㅠㅠㅠㅠ
어디에 파일을 만드느냐가 매우매우 중요하므로 주의 또 주의하자..
컨트롤러나 화면 표시될 jsp는 이미 만들어져있다고 가정하고
데코레이터만 만들어서 사이트메쉬 적용하는걸 설명해보겠습니당
1. pom.xml에 sitemesh 추가
<!-- Sitemesh3 -->
<dependency>
<groupId>org.sitemesh</groupId>
<artifactId>sitemesh</artifactId>
<version>3.0.1</version>
</dependency>
2. src/main/webapp/WEB-INF/**에 decorator파일 생성 (deco기본에 적용되었는지 확인을 위해 div하나만 추가함)
저는 src/main/webapp/WEB-INF/decorator/maindeco.jsp 파일을 만듬
decorator폴더를 만들어서 넣은 이유는 deco를 권한별로 만들 수도 있으므로(admindeco, userdeco.. 등)
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title><sitemesh:write property='title' /></title>
<sitemesh:write property='head' />
</head>
<body>
<div>HIHI 저는 데코입니당</div>
<sitemesh:write property='body' />
</body>
</html>
div는 데코 적용되었는지 구분하기 위해서 추가
sitemesh:write property는 title, head, body가 있는데 데코씌울 페이지의 title, head, body를 각각 해당 위치로 넣어주는거고
이부분은 sitemesh3 써본분들은 아실테니 자세한 설명은 생략합니당 모르시는분은 댓글로 써주시면 답변남겨드릴게요
3. src/main/java/**에 클래스 생성 (/**는 하위 디렉토리 있어도 상관없음)
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/maindeco.jsp");
}
}
이부분이 매우매우 중요****
앞에 /*는 모든 경로를 의미 /WEB-INF/decorator/maindeco.jsp는 2번에서 만든 decorator파일경로입니다
만약 본인이 WEB-INF밑에 바로 decorator파일을 만들었으면 /WEB-INF/maindeco.jsp 이렇게 써야함
1번째 매개변수 : 주소 (보통 controller의 requestMapping의 value값)
2번째 매개변수 : decorator 파일 경로
4. src/main/java/**에 클래스 생성
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()); //2번에서 만든 클래스 이름으로 사용
return filter;
}
}
실행해보면 페이지에 HIHI 저는 데코입니당이 추가로 보이게 됩니다
'게임 개발 초보자 > 초보자의 개발일기' 카테고리의 다른 글
[Spring Boot] 부트 gradle 설치 오류 (0) | 2018.11.02 |
---|---|
[Oracle] 로컬에서 쓰는 사용자 추가 (0) | 2018.11.02 |
[Spring] JRE버전 바꿀때 꼭 확인하기 (0) | 2018.08.23 |
[String] Controller에서 return값 차이 (0) | 2018.07.26 |
[Spring] EasyUI Tree (0) | 2018.07.23 |