(Spring4셋팅 Step3) Sitemesh 추가하기

프로그래밍/Java | 2015. 7. 14. 19:38
Posted by 애니스

1. pom.xml에 dependency 추가

 

  <!-- sitemesh -->
  <dependency>
   <groupId>opensymphony</groupId>
   <artifactId>sitemesh</artifactId>
   <version>2.4.2</version>
  </dependency> 

 

2. web.xml에 sitemesh 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>

 

 

3. WEB-INF 폴더 밑에 sitemesh.xml 파일을 만들고 아래 내용을 추가

 

<?xml version="1.0" encoding="UTF-8"?>
<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.FastPageParser"/>
 </page-parsers>

 <decorator-mappers>

  <mapper class="com.opensymphony.module.sitemesh.mapper.PageDecoratorMapper">
   <param name="property.1" value="meta.decorator"/>
   <param name="property.2" value="decorator"/>
  </mapper>

  <mapper class="com.opensymphony.module.sitemesh.mapper.FrameSetDecoratorMapper">
  </mapper>

  <mapper class="com.opensymphony.module.sitemesh.mapper.AgentDecoratorMapper">
   <param name="match.MSIE" value="ie"/>
   <param name="match.Mozilla" value="ns"/>
   <param name="match.Opera" value="opera"/>
   <param name="match.Lynx" value="lynx"/>
  </mapper>

  <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.RobotDecoratorMapper">
   <param name="decorator" value="robot"/>
  </mapper>

  <mapper class="com.opensymphony.module.sitemesh.mapper.ParameterDecoratorMapper">
   <param name="decorator.parameter" value="decorator"/>
   <param name="parameter.name" value="confirm"/>
   <param name="parameter.value" value="true"/>
  </mapper>

  <mapper class="com.opensymphony.module.sitemesh.mapper.FileDecoratorMapper">
  </mapper>

  <mapper class="com.opensymphony.module.sitemesh.mapper.ConfigDecoratorMapper">
   <param name="config" value="${decorators-file}"/>
  </mapper>

 </decorator-mappers>

</sitemesh> 

 

4. WEB-INF 폴더 밑에 decorators.xml 파일을 만들고 아래 내용을 추가

 

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

<!-- 데코레이터 기본 폴더 -->

<decorators defaultdir="/WEB-INF/view/layout">


 <!-- 예외 URL 패턴 -->
 <excludes>
     <pattern>*login*</pattern>
 </excludes>

 

 <decorator name="header-footer-layout" page="header-footer-layout.jsp">
  <pattern>*</pattern>
 </decorator>


</decorators> 

 

decorators.xml 파일의 항목에 대한 설명이다.

 

<decorators defaultdir="/WEB-INF/view/layout">

데코레이터 기본 폴더인데, sitemesh의 layout 관련 파일은 /WEB-INF/view/layout 폴더로 추가 할 것이다.

 

<pattern>*login*</pattern>
여기 패턴은 sitemesh를 사용하지 않을 URL 패턴을 입력하면 된다.

아직 만들어진 것이 없어 추가할 내용은 없지만, 추후 login 문자열이 들어간 URL은 sitemesh를 사용하지 않겠다는 것이다.

 

<decorator name="header-footer-layout" page="header-footer-layout.jsp">

이 부분이 데코레이터를 정의하는 부분이다.

여기서는 아래와 같이 header와 footer가 고정으로 들어가고 본문내용만 바뀌는 데코레이터를 만들 생각이다.

 

header

본문

footer

 

 

5. 이제 데코레이터를 만들자.

위에 지정한대로 /WEB-INF/view/layout 폴더 안에 header-footer-layout.jsp 파일을 생성한다.

 

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

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

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
 <title>테스트 페이지</title>
 
 <!-- 공통 CSS -->

 

 <!-- 공통 JS -->
 
 <decorator:head />
</head>
<body>
 
 <div>공통 헤더</div>
 <hr />
 
 <div>
  <decorator:body />
 </div>
 
 <hr />
 <div>공통 푸터</div>
</body>
</html> 

 

<decorator:head /> <decorator:body /> 이 부분에 아래의 내용이 들어간다.

 

참고 자료는 이전 글에서 사용하였던 selectMember.jsp 파일이다

 

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
 Hello, world! <br/>
 입력받는 아이디는 ${memberBean.mbId} 입니다.
</body>
</html> 

 

 

<decorator:head /> 부분에는 파란색 영역의 헤더 내용만 들어간다.

<decorator:body /> 부분에는 분홍색 영역의 바디 내용만 들어간다.

 

이전 글에서 만들었던 http://localhost/member/selectMember.do?mbId=1234 를 호출 할 경우 아래와 같이 header-footer-layout.jsp안에 selectMember.jsp의 head와 body 내용이 들어간다.

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

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
 <title>테스트 페이지</title>
 
 <!-- 공통 CSS -->

 

 <!-- 공통 JS -->
 
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
 
 <div>공통 헤더</div>
 <hr />
 
 <div>
  Hello, world! <br/>
 입력받는 아이디는 ${memberBean.mbId} 입니다.
 </div>
 
 <hr />
 <div>공통 푸터</div>
</body>
</html> 

 

브라우져로 확인 해 보았을 경우 아래와 같은 화면이 나온다.

 

 

 

 

 
블로그 이미지

애니스

카테고리

분류 전체보기 (10)
프로그래밍 (10)
애니스전용 (0)