sitemesh入门

     sitemesh应用Decorator模式,用filter截取request和response,把页面组件head,content,banner结合为一个完整的视图。通常我们都是用include标签在每个jsp页面中来不断的包含各种header, stylesheet, scripts and footer,现在,在sitemesh的帮助下,我们可以开心的删掉他们了。
    一、在WEB-INF/web.xml中copy以下filter的定义:

<!-- 使用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>
		<dispatcher>REQUEST</dispatcher>
		<dispatcher>FORWARD</dispatcher>
		<dispatcher>INCLUDE</dispatcher>
	</filter-mapping>
	<!-- 为了使用freemaker进行的配置 start -->

二、copy所需sitemesh-2.4.1.jar到WEB-INF\lib下。maven:
<dependency>
    <groupId>sitemesh</groupId>
    <artifactId>sitemesh</artifactId>
    <version>2.4.1</version>
</dependency>


三、 建立WEB-INF/decorators.xml描述各装饰器页面。
<decorators defaultdir="/WEB-INF/decorators">
       <!-- 配置哪些URL不需要模板控制 -->
       <excludes>
  		<pattern>/WEB-INF/view/details.jsp</pattern>
       </excludes>
       <decorator name="serviceTemplate" page="serviceTemplate.jsp">
           <pattern>/WEB-INF/view/location.jsp</pattern>  
       </decorator>
</decorators>

四、 建立装饰器页面 /decorators/serviceTemplate.jsp
<%@page language="java" pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%>
<%@taglib uri="http://www.opensymphony.com/sitemesh/decorator" prefix="decorator"%>
<%@taglib uri="http://java.sun.com/jstl/core_rt" prefix="c"%>
<%
	String path1 = request.getContextPath();
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
	<head>
		<meta http-equiv="content-type" content="text/html;charset=UTF-8" />
		<link href="<%=path1 %>/view/style/common/style.css" rel="stylesheet" type="text/css" />
		<script type="text/javascript" src="<%=path1 %>/view/js/jquery.min.js"></script>
		<title><decorator:title default="我的模板" />
		</title>
		<decorator:head />
	</head>
	<body>
		<input type="hidden" id="topNavId" value="service" />
		<%@include file="/WEB-INF/view/common/top.jsp"%>
		<!-- 中间区开始 -->
		<decorator:body />
		<!-- 中间区结束 -->
		<%@include file="/WEB-INF/view/common/Bottom.jsp"%>
	</body>
</html>

五、建立一个的被装饰页面 /location.jsp(内容页面)
<%@ page contentType="text/html; charset=UTF-8"%>
<html>
     <head>
       <title>Agent Test</title>
     </head>
     <body>
       <p>本页只有一句,就是本句.</p>
     </body>
</html>

分享让更多人受益!

你可能感兴趣的:(java)