第一步:
在web.xml中提供过滤器
<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>
第二步:
在WEB-INF下新建decorators.xml文件:
<?xml version="1.0" encoding="utf-8"?>
<decorators defaultdir="/WEB-INF/layouts/"><!-- 此目录随意 -->
<!-- 此处用来定义不需要过滤的页面 -->
<excludes>
<pattern>/static/*</pattern>
</excludes>
<!-- 用来定义装饰器要过滤的页面 -->
<decorator name="default" page="default.jsp"><!-- 此为装饰页面地址 -->
<pattern>/*</pattern>
</decorator>
</decorators>
<?xml version="1.0" encoding="utf-8"?>
<decorators defaultdir="/WEB-INF/layouts/">
<decorator name="default" page="default.jsp">
</decorator>
<decorator name="admin" page="admin.jsp">
</decorator>
</decorators>
<meta name="decorator" content="default" />//也可以在需要的页面导入即可
第三步:
编写对应路径下的装饰页面default.jsp:
<%@ page contentType="text/html;charset=UTF-8"%>
<%@ taglib prefix="sitemesh" uri="http://www.opensymphony.com/sitemesh/decorator" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<c:set var="ctx" value="${pageContext.request.contextPath}" />
<!DOCTYPE html>
<html>
<head>
<title>QuickStart示例:<sitemesh:title/></title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta http-equiv="Cache-Control" content="no-store" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="0" />
<link type="image/x-icon" href="${ctx}/static/images/favicon.ico" rel="shortcut icon">
<link href="${ctx}/sc/bootstrap/2.3.0/css/bootstrap.min.css" type="text/css" rel="stylesheet" />
<link href="${ctx}/sc/jquery-validation/1.11.0/validate.css" type="text/css" rel="stylesheet" />
<link href="${ctx}/css/base/default.css" type="text/css" rel="stylesheet" />
<script src="${ctx}/sc/jquery/jquery-1.9.1.min.js" type="text/javascript"></script>
<script src="${ctx}/sc/jquery-validation/1.11.0/jquery.validate.min.js" type="text/javascript"></script>
<script src="${ctx}/sc/jquery-validation/1.11.0/messages_bs_zh.js" type="text/javascript"></script>
<sitemesh:head/>
</head>
<body>
<div class="container">
<%@ include file="/WEB-INF/layouts/header.jsp"%><!-- 此为装饰页面的头部,可直接写 -->
<div id="content">
<sitemesh:body/>
</div>
<%@ include file="/WEB-INF/layouts/footer.jsp"%><!-- 此为装饰页面的尾部,可直接写 -->
</div>
<script src="${ctx}/sc/bootstrap/2.3.0/js/bootstrap.min.js" type="text/javascript"></script>
</body>
</html>
最终页面标题为:QuickStart示例:<sitemesh:title/>
最终页面头部为:此模板头部加自己头部<sitemesh:head/>
最终页面身体为:
<div class="container">
<%@ include file="/WEB-INF/layouts/header.jsp"%><!-- 此为装饰页面的头部,可直接写 -->
<div id="content">
<sitemesh:body/>
</div>
<%@ include file="/WEB-INF/layouts/footer.jsp"%><!-- 此为装饰页面的尾部,可直接写 -->
</div>
<script src="${ctx}/sc/bootstrap/2.3.0/js/bootstrap.min.js" type="text/javascript"></script>
仅仅靠调用<sitemesh:body/><sitemesh:head/><sitemesh:title/>三个标签提取原网页进行修饰
在web.xml中提供过滤器
<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>
第二步:
在WEB-INF下新建decorators.xml文件:
<?xml version="1.0" encoding="utf-8"?>
<decorators defaultdir="/WEB-INF/layouts/"><!-- 此目录随意 -->
<!-- 此处用来定义不需要过滤的页面 -->
<excludes>
<pattern>/static/*</pattern>
</excludes>
<!-- 用来定义装饰器要过滤的页面 -->
<decorator name="default" page="default.jsp"><!-- 此为装饰页面地址 -->
<pattern>/*</pattern>
</decorator>
</decorators>
<?xml version="1.0" encoding="utf-8"?>
<decorators defaultdir="/WEB-INF/layouts/">
<decorator name="default" page="default.jsp">
</decorator>
<decorator name="admin" page="admin.jsp">
</decorator>
</decorators>
<meta name="decorator" content="default" />//也可以在需要的页面导入即可
第三步:
编写对应路径下的装饰页面default.jsp:
<%@ page contentType="text/html;charset=UTF-8"%>
<%@ taglib prefix="sitemesh" uri="http://www.opensymphony.com/sitemesh/decorator" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<c:set var="ctx" value="${pageContext.request.contextPath}" />
<!DOCTYPE html>
<html>
<head>
<title>QuickStart示例:<sitemesh:title/></title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta http-equiv="Cache-Control" content="no-store" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="0" />
<link type="image/x-icon" href="${ctx}/static/images/favicon.ico" rel="shortcut icon">
<link href="${ctx}/sc/bootstrap/2.3.0/css/bootstrap.min.css" type="text/css" rel="stylesheet" />
<link href="${ctx}/sc/jquery-validation/1.11.0/validate.css" type="text/css" rel="stylesheet" />
<link href="${ctx}/css/base/default.css" type="text/css" rel="stylesheet" />
<script src="${ctx}/sc/jquery/jquery-1.9.1.min.js" type="text/javascript"></script>
<script src="${ctx}/sc/jquery-validation/1.11.0/jquery.validate.min.js" type="text/javascript"></script>
<script src="${ctx}/sc/jquery-validation/1.11.0/messages_bs_zh.js" type="text/javascript"></script>
<sitemesh:head/>
</head>
<body>
<div class="container">
<%@ include file="/WEB-INF/layouts/header.jsp"%><!-- 此为装饰页面的头部,可直接写 -->
<div id="content">
<sitemesh:body/>
</div>
<%@ include file="/WEB-INF/layouts/footer.jsp"%><!-- 此为装饰页面的尾部,可直接写 -->
</div>
<script src="${ctx}/sc/bootstrap/2.3.0/js/bootstrap.min.js" type="text/javascript"></script>
</body>
</html>
最终页面标题为:QuickStart示例:<sitemesh:title/>
最终页面头部为:此模板头部加自己头部<sitemesh:head/>
最终页面身体为:
<div class="container">
<%@ include file="/WEB-INF/layouts/header.jsp"%><!-- 此为装饰页面的头部,可直接写 -->
<div id="content">
<sitemesh:body/>
</div>
<%@ include file="/WEB-INF/layouts/footer.jsp"%><!-- 此为装饰页面的尾部,可直接写 -->
</div>
<script src="${ctx}/sc/bootstrap/2.3.0/js/bootstrap.min.js" type="text/javascript"></script>
仅仅靠调用<sitemesh:body/><sitemesh:head/><sitemesh:title/>三个标签提取原网页进行修饰