테스트 환경
개발 툴 : 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. 웹 호출
톰캣 구동 후 해당 페이지를 호출 해 본다.
다음과 같이 출력된다면 정상적으로 적용된 것이다.
'개발' 카테고리의 다른 글
[Java8] Stream - 무한 스트림 생성, 결합, 중복요소제거, 정렬, peek (0) | 2016.08.17 |
---|---|
[Java8] Stream - 스트림 생성 및 filter, map, flatMap 메서드 예제 (0) | 2016.08.16 |
[sitemesh] Spring - sitemesh 설정 (7) | 2016.06.30 |
[Bootstrap] 반응형 웹 부트스트랩 다운로드 (0) | 2016.06.29 |
[STS] 서버 및 스프링 프로젝트 생성 (0) | 2016.06.28 |
[STS] STS.ini 및 이클립스 환경 설정 (2) | 2016.06.24 |
다 적용했는데 호출 어떻게 하죵??
톰캣 포트를 변경하지 않으셨다면 주소창에 http://localhost:8080/
또는 http://localhost:8080/프로젝트명 으로 호출해보세요.
감사합니다. 잘되네요/
@Controller에 RequestMapping을 home.do로 해놓고 decorator에는 sampleLayout으로 해놔서 문제가 됐었네요!
톰캣호출이 아니라 url 매칭 문제였군요~
해결되셨다니 다행입니다^^
<decorator name="sampleLayout" page="sampleLayout.jsp">
<pattern>/sample*</pattern>
</decorator>
>>>
<pattern>/sample*</pattern>
에서
<pattern>/*</pattern>
바꾸니까 적용되네요..하아....감사합니다.
여기가 그래도 제일 정리가 잘 되어 있네요!!!
테스트용이라 /sample*을 붙인거구요 전체에 적용하려면 /*로 하는게 맞습니다. 저도 최근에 이거보고 다시 세팅했네요~ 기록의 중요성~ 감사합니다~