siteMesh설명

개발도구 2015. 3. 9. 13:23

사이트 출력시 사용하는 siteMesh에 대한 설명


1. 사이트 매쉬 설정 파일 설명

- web.xml

- sitemesh.xml

- decorator.xml


web.xml application에 대한 설정 및 url에 대한 filter정의를 한다.

<filter>

<filter-name>sitemesh</filter-name>

<filter-class>

com.opensymphony.module.sitemesh.filter.PageFilter

</filter-class>

</filter>

<filter-mapping>

<filter-name>sitemesh</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>


모든 URL에 대해서 sitemesh를 이용하게 해주는 설정 url-pattern 기준으로 

com.opensymphony.module.sitemesh.filter.PageFilter 를 통해서 페이지가 

출력 되게 설정 작업을 한다.


sitemesh.xml의 경우 사이트 매쉬에서 어떤 내용의로 사이트 매쉬를 사용할지와

출력과 관련된 설정 파일인 decorator.xml을 어떤 파일로 사용 하는지 정의 하게

된다.

<property name="decorators-file" value="/WEB-INF/decorator.xml"/>

<excludes file="${decorators-file}"/>


<mapper class="com.opensymphony.module.sitemesh.mapper.ConfigDecoratorMapper">

    <param name="config" value="${decorators-file}" />

</mapper>


decorators-file에 정의한 경로의 decorator.xml파일의 설정 내용을 출력시 사용한다는

내용 입니다.


decorator.xml 파일의 경우 어떤 url에 대해서 출력할 layout파일을 정의 하는 설정이

있는 파일 입니다.

<decorators defaultdir="/WEB-INF/views/-decorator"> 으로 layout파일의 경로를 정의

하고 excludes 설정으로 사이트매쉬를 이용하지 않을 url패턴과 

decorator 태그를 이용해서  url패턴별로 layout파일의 위치를 정의 하게 됩니다.


2. 사이트 매쉬 layout 파일 설명

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

<%@ taglib prefix="decorator" uri="http://www.opensymphony.com/sitemesh/decorator" %>

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>


<% response.setHeader("X-UA-Compatible", "IE=edge,chrome=1"); %>


<!doctype html>

<html lang="ko">

<head>

<decorator:head />

</head>

<body onload="<decorator:getProperty property="body.onload" />" <decorator:getProperty property="body.id" writeEntireProperty="true" /> <decorator:getProperty property="body.class" writeEntireProperty="true" />> 

    <decorator:body />

</body>

</html>

위의 내용 기준으로 decorator: 이후에 설정된 부분에 대한 내용을 통해서 데이터를 출력 할 수 있습니다.

사이트 매쉬의 경우 출력하려는 jsp파일의 내용을 정해진 내용에 맞춰서 출력 해주게 됩니다.

<html>

<head>

<title>제목 출력 입니다.</title>

<script>

alert("hello");

</script>

</head>

<body onload="onload" id="" class="">

<div>내용 출력</div>

</body>

</html>

의 파일을 출력 하는 경우 

<title>제목 출력 입니다.</title>

<script>

alert("hello");

</script>

의 내용이 <decorator:head /> 부분에

<div>내용 출력</div>

의 내용이 <decorator:body /> 부분에 출력

되며 body안의 onload="onload" id="" class="" attribute들도 

onload="<decorator:getProperty property="body.onload" />" <decorator:getProperty property="body.id" writeEntireProperty="true" /> <decorator:getProperty property="body.class" writeEntireProperty="true" />

에 출력 됩니다.

반응형
Posted by 질주하는구
,