본문 바로가기

dev/java(egov)

egov 4.1 spring boot sitemesh 설정

반응형
sitemesh 사전적 설명
더보기

Java에서 Sitemesh는 웹 애플리케이션에서 템플릿 기반의 페이지 레이아웃을 쉽게 구현하기 위한 프레임워크입니다. Sitemesh는 페이지의 일부 영역을 동적으로 교체하고 레이아웃을 적용하는 데 사용됩니다. 이를 통해 웹 애플리케이션에서 일관된 디자인 및 레이아웃을 유지하고 코드의 재사용성을 높일 수 있습니다.

Sitemesh의 주요 기능은 다음과 같습니다:

  1. 템플릿 기반 레이아웃: Sitemesh를 사용하면 웹 페이지의 레이아웃을 정의하는 템플릿 파일을 만들 수 있습니다. 이 템플릿은 일반적으로 웹 사이트의 헤더, 푸터, 사이드바 등과 같은 공통된 요소를 포함합니다.
  2. 페이지 교체: Sitemesh는 템플릿과 컨텐츠를 결합하여 최종적으로 사용자에게 보여지는 페이지를 생성합니다. 이 과정에서 템플릿 내에서 특정한 영역을 동적으로 변경하거나 교체할 수 있습니다.
  3. 다양한 템플릿 지원: Sitemesh는 JSP, HTML, Freemarker, Velocity 등과 같은 다양한 템플릿 엔진을 지원합니다.
  4. 설정 가능한 규칙: Sitemesh는 사용자가 페이지 레이아웃 및 템플릿을 지정하는 규칙을 설정할 수 있습니다. 이를 통해 특정 URL 패턴이나 특정 페이지에 대한 레이아웃을 다르게 적용할 수 있습니다.
  5. 간편한 사용: 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