티스토리 뷰


테스트 환경 

개발 툴 : STS 3.7.3

프로젝트 환경 : Spring MVC project




웹페이지 레이아웃 처리시 사용되는 sitemesh 설정하는 방법이다. 

header, side, footer와 같이 반복되는 부분을 레이아웃으로 설정해서 사용할 수 있다. 




1. 메이븐에 sitemesh 라이브러리 추가


pom.xml 파일을 열고 <dependencies> 사이에 아래 내용을 추가한다.


<!-- Sitemesh -->

<dependency>

    <groupId>opensymphony</groupId>

    <artifactId>sitemesh</artifactId>

    <version>2.4.2</version>

</dependency>





2. sitemesh 필터 매핑


/WEB-INF/web.xml  파일을 열고 <web-app> 사이에 아래 내용을 추가한다.


<!-- Sitemesh -->

<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를 적용시키겠다는 내용이다. 




3. sitemesh.xml 생성


/WEB-INF/sitemesh.xml 경로에 파일을 생성후 아래 내용을 추가한다. 


<?xml version="1.0" encoding="UTF-8"?>

<sitemesh>

<property name="decorators-file" value="/WEB-INF/config/decorator/decorator.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="printable" />

<param name="parameter.name" value="printable" />

<param name="parameter.value" value="true" />

</mapper>


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

<param name="property" value="meta.decorator" />

</mapper>


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

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

</mapper>

</decorator-mappers>

</sitemesh>





4. decorator.xml 생성


/WEB-INF/config/decorator/decorator.xml 파일을 생성후 아래 내용을 추가한다. 


<?xml version="1.0" encoding="UTF-8"?>

<!-- default directory 설정 -->

<decorators defaultdir="/WEB-INF/views/decorators">

<!-- sample -->

<decorator name="sampleLayout" page="sampleLayout.jsp">

<pattern>/sample*</pattern>

</decorator>

<!-- decorators를 적용시키지 않을 url 패턴 -->

<excludes>

<pattern>/excludes/*</pattern>

</excludes>

</decorators>


url 패턴에 '/sample*'이 들어가면 /WEB-INF/views/decorators/sampleLayout.jsp 적용하겠다는 내용이다.





5. sampleLayout.jsp 생성


/WEB-INF/views/decorators/sampleLayout.jsp 파일을 생성후 아래 내용을 추가한다. 


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

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

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

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


<!DOCTYPE html>

<html lang="ko">

<head>

<meta charset="utf-8">

<title><decorator:title default="JLStory" /></title>

<decorator:head />

</head>

<body>

<!-- header -->

<header style="width: 100%; text-align:center">

<h2>This is header</h2>

</header>

<!-- content -->

<decorator:body></decorator:body>


<!-- FOOTER -->

<footer style="width:100%; text-align:center;">

<p> This is footer</p>

</footer>


</body>

</html>





6. content.jsp 생성


/WEB-INF/views/content.jsp 파일을 생성후 아래 내용을 추가한다. 


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

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

<%@ page session="false" %>

<div style="text-align:center; width: 100%; margin-top:30px; min-height:200px;">

<h1>

This is content  

</h1>

<P>  The time on the server is ${serverTime}. </P>

</div>




7. 웹 호출


톰캣 구동 후 해당 페이지를 호출 해 본다.


다음과 같이 출력된다면 정상적으로 적용된 것이다. 
















댓글