1. SiteMesh란?
Sitemesh는 Spring 프레임워크에서 Sitemesh를 사용하여 웹 애플리케이션의 디자인 및 레이아웃을 쉽게 구성할 수 있도록 지원합니다. Sitemesh는 Spring MVC와 통합되며, Sitemesh 데코레이터를 사용하여 웹 페이지의 헤더, 푸터, 사이드바 등의 공통된 디자인 요소를 정의하고, 이러한 요소를 웹 페이지에 적용할 수 있습니다
Sitemesh를 사용하면 애플리케이션의 디자인과 레이아웃을 쉽게 변경할 수 있으며, 코드의 중복을 최소화할 수 있습니다. 또한, Sitemesh가 제공하는 다양한 데코레이터를 활용하여 디자인 요소를 구성할 수 있으므로, 웹 페이지의 디자인을 보다 효율적으로 관리할 수 있습니다.
또한 중복되는 코드가 모든 페이지에 삽입된다면 코드의 가독성이나 유지보수 측면에서 비용을 감소 시킬 수 있습니다.
2. SiteMesh 라이브러리 추가 (build.gradle)
먼저, Spring Sitemesh 라이브러리를 프로젝트에 추가해야 합니다.
Gradle일 경우, build.gradle파일에 다음 의존성을 추가합니다.(maven일경우는 pom.xml에서 설정)
dependencies {
implementation 'org.sitemesh:sitemesh:3.0.1'
// 또는
compile group: 'org.springframework.sitemesh', name: 'spring-sitemesh', version: '5.3.5.RELEASE'
}
3. SiteMesh 구성
SiteMesh를 구성하기 위해 Spring구성 파일(WebApplication.java)에 다음과 같이 빈을 추가합니다.
3-1. ServletfilterConfig 파일 설정
import 해당패키지경로.SiteMeshConfig;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
@EnableRedisHttpSession
public class WebApplication extends SpringBootServletInitializer {
..생략
public static void main(String[] args) {
SpringApplication.run(WebApplication.class, args);
}
// bin설정
// setFilter()를 통해 view페이지들이 SitemeshFilter를 거칠 수 있도록 설정
@Bean public FilterRegistrationBean<SiteMeshConfig> siteMeshFilter() {
FilterRegistrationBean<SiteMeshConfig> filter = new FilterRegistrationBean<SiteMeshConfig>();
filter.setFilter(new SiteMeshConfig());
return filter;
}
}
3-2.SitemeshFilter 파일 설정
// 적용할 filter 설정
public class SitemeshFilter extends ConfigurableSiteMeshFilter {
@Override
protected void applyCustomConfiguration(SiteMeshFilterBuilder builder) {
// 모든 경로(/*)에 대해 default.jsp라는 Decorator를 타라
builder.addDecoratorPath("/*", "/WEB-INF/decorator/default.jsp")
// /admin/*라는 url은 admin_default.jsp라는 Decorator를 타라
.addDecoratorPath("/admin/*", "/WEB-INF/decorator/admin_default.jsp")
// /sitemap라는 url은 어떠한 Decorator도 타지 않게 제외
.addExcludedPath("/sitemap");
}
}
SiteMesh는 view페이지가 Decorator를 한번 거치고 사용자에게 반환되록 합니다.
SitemeshFilter.java에서 사용자로부터 요청된 view페이지가 어떤 Decorator를 거칠 것인지 지정해줍니다.
- addDecoratorPath() Decorator에 포함될 url과 Decorator종류를 지정
- addExcludedPath() Decorator로부터 제외될 url을 설정
4. Decorator 구성
//admin_default.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!DOCTYPE html>
<html lang="ko">
// include로 공통처리(head)
<%@ include file="/WEB-INF/includes/admin/head.jsp" %>
<body class="nav-md">
<div class="container body">
<div class="main_container">
<!-- header content -->
// include로 공통처리(header)
<%@ include file="/WEB-INF/includes/admin/header.jsp" %>
<!-- /header content -->
<!-- page content -->
// 요청된 url에 따른 해당 페이지가 <sitemesh:wirte property='body'/>라는
// 태그에서 동적으로 삽입
<sitemesh:write property='body' />
<!-- /page content -->
<!-- footer content -->
// include로 공통처리(footer)
<%@ include file="/WEB-INF/includes/admin/footer.jsp" %>
<!-- /footer content -->
</div>
</div>
</body>
</html>
참고사항
application.yml에서 view페이지의 prefix와 suffix를 설정할 수 있습니다.
mvc:
view:
prefix: /WEB-INF/jsp/
suffix: .jsp
ref.
[Spring Boot]SiteMesh 설정하기
SiteMesh가 무엇인지, 사용하면 어떤 게 좋을지 확인해 본 후 실제 JSP 화면에 적용시키는 실습까지 진행한다. 화면까지 직접 디자인하는 것은 시간낭비일 것 같아서 무료 부트스트랩 테마를 가져
hye0-log.tistory.com
'웹프로그래밍 무작정따라하기 > JAVA_Spring' 카테고리의 다른 글
[JAVA] 로그관리 (0) | 2023.06.16 |
---|---|
[JAVA] 자바에서 말하는 직렬화 ? 역직력화? (0) | 2023.05.31 |
[Spring] mvc와 mvc1 pattern 차이 (0) | 2022.11.24 |
[JSP] EL 문법이용하여 URL 활용 (0) | 2022.11.14 |
[ JAVA ] 자바 입문 메소드(Method)선언 (0) | 2022.07.29 |
댓글