반응형
sitemesh 사전적 설명
더보기
Java에서 Sitemesh는 웹 애플리케이션에서 템플릿 기반의 페이지 레이아웃을 쉽게 구현하기 위한 프레임워크입니다. Sitemesh는 페이지의 일부 영역을 동적으로 교체하고 레이아웃을 적용하는 데 사용됩니다. 이를 통해 웹 애플리케이션에서 일관된 디자인 및 레이아웃을 유지하고 코드의 재사용성을 높일 수 있습니다.
Sitemesh의 주요 기능은 다음과 같습니다:
- 템플릿 기반 레이아웃: Sitemesh를 사용하면 웹 페이지의 레이아웃을 정의하는 템플릿 파일을 만들 수 있습니다. 이 템플릿은 일반적으로 웹 사이트의 헤더, 푸터, 사이드바 등과 같은 공통된 요소를 포함합니다.
- 페이지 교체: Sitemesh는 템플릿과 컨텐츠를 결합하여 최종적으로 사용자에게 보여지는 페이지를 생성합니다. 이 과정에서 템플릿 내에서 특정한 영역을 동적으로 변경하거나 교체할 수 있습니다.
- 다양한 템플릿 지원: Sitemesh는 JSP, HTML, Freemarker, Velocity 등과 같은 다양한 템플릿 엔진을 지원합니다.
- 설정 가능한 규칙: Sitemesh는 사용자가 페이지 레이아웃 및 템플릿을 지정하는 규칙을 설정할 수 있습니다. 이를 통해 특정 URL 패턴이나 특정 페이지에 대한 레이아웃을 다르게 적용할 수 있습니다.
- 간편한 사용: Sitemesh는 간단한 구성과 사용법을 제공하므로 비교적 쉽게 웹 애플리케이션에 통합할 수 있습니다.
Sitemesh는 Java 웹 애플리케이션 개발에서 널리 사용되었으며, 페이지 레이아웃을 관리하고 관리하기 쉽도록 하는데 큰 도움을 주었습니다. 그러나 최근에는 더욱더 많은 개발자들이 대체적으로 더 강력한 템플릿 엔진 및 프런트엔드 프레임워크에 의존하는 추세가 있습니다.
웹개발에서 jsp 단 수정을 최소화 공통화 하기 위해 필수라고 생각하는 sitemesh 설정을 해보려 합니다.
sitemesh를 쉽게 설명해 보겠습니다.
- 웹페이지의 공통 페이지입니다.
- 페이지를 새로 개발할 때마다 공통으로 들어가는 페이지를 매번 설정하지 않지 않고 한 번에 처리할 수 있는 페이지입니다.
아래 그림에서 매번 개발하는 페이지만 개발하고 top, left, footer 페이지는 자동으로 적용되도록 하는 내용입니다..
기존 egov에서는 maven 설정이 필요 없었던 거 같은데 이번에는 필요합니다.
pom.xml 설정
- maven 추가합니다.
<dependency>
<groupId>opensymphony</groupId>
<artifactId>sitemesh</artifactId>
<version>2.4.2</version>
</dependency>
sitemesh 설정에 필요한 파일을 3개 생성합니다.
\src\main\webapp\WEB-INF\web.xml
\src\main\webapp\WEB-INF\sitemesh.xml
\src\main\webapp\WEB-INF\decorators.xml
sitemesh.xml 설정
- 아래 내용 복사하여 파일을 생성합니다.
- decorators-file 파일 경로는 맞춰 줘야 합니다.
<sitemesh>
<property name="decorators-file" value="/WEB-INF/decorators.xml" />
<excludes file="${decorators-file}" />
<page-parsers>
<parser content-type="text/html"
class="com.opensymphony.module.sitemesh.parser.HTMLPageParser" />
<parser content-type="text/html;charset=utf-8"
class="com.opensymphony.module.sitemesh.parser.HTMLPageParser" />
</page-parsers>
<decorator-mappers>
<mapper class="com.opensymphony.module.sitemesh.mapper.PrintableDecoratorMapper">
<param name="decorator" value="popup" />
<param name="parameter.name" value="isPopup" />
<param name="parameter.value" value="true" />
</mapper>
<mapper class="com.opensymphony.module.sitemesh.mapper.ConfigDecoratorMapper">
<param name="config" value="${decorators-file}" />
</mapper>
</decorator-mappers>
</sitemesh>
decorators.xml
- 아래 내용 복사하여 파일을 생성합니다.
- decorator : 사용할 decorator 파일입니다.
- excludes : decorator 제외 파일입니다.
- 기본페이지 페턴을 "*.*"로 적용 시 모든 페이지는 default.jsp 페이지를 기본으로 사용합니다.
<?xml version="1.0" encoding="utf-8"?>
<decorators>
<excludes>
<pattern>*javascript*</pattern>
</excludes>
<decorator name="기본page" page="/WEB-INF/decorators/default.jsp">
<pattern>*.*</pattern>
</decorator>
</decorators>
default.jsp
- prefix="decorator", prefix="page" sitemesh 설정 페이지
- decorator:head : 매번 개발해야 하는 페이지의 head 부분
- decorator:body : 매번 개발해야 하는 페이지
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib uri="http://www.opensymphony.com/sitemesh/decorator" prefix="decorator" %>
<%@ taglib uri="http://www.opensymphony.com/sitemesh/page" prefix="page" %>
<%@ taglib uri = "http://java.sun.com/jsp/jstl/functions" prefix = "fn" %>
<!doctype html>
<html lang="ko" xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>hoho사이트</title>
<decorator:head />
</head>
<body>
<div>
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
</div>
<decorator:body />
<div>
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
</div>
</body>
</html>
반응형
'dev > java(egov)' 카테고리의 다른 글
egov 4.1 spring boot 다국어 (0) | 2024.02.15 |
---|---|
decorators.xml 설정 (0) | 2024.02.14 |
egov 4.1 spring boot multi db (2) | 2024.02.12 |
egov 4.1 db application.yml 설정 (0) | 2024.02.11 |
spring boot 시작 egov 4.1 (0) | 2024.02.07 |