第一步:
在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/>三個標籤提取原網頁進行修飾
sitemesh的使用
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
EL表達式各種用法(原創筆記)
青春微凉离不开伤
2020-06-17 15:16:27
java基礎筆記(三)
java.apple.Applet(java.awt.panel)init()初始化→start()開始→←stop()停止→destroy()消亡p
青春微凉离不开伤
2020-06-17 15:16:27
JAVA基礎筆記(二)
java.ioInputStream()輸入FileInputStream()從本地文件讀取數據字節pipedInputStream()從線程管道中讀
青春微凉离不开伤
2020-06-17 15:16:27
JAVA基礎筆記(一)
青春微凉离不开伤
2020-02-23 02:35:39
EL表達式各種用法(原創筆記)
青春微凉离不开伤
2020-06-17 15:16:27
java基礎筆記(三)
java.apple.Applet(java.awt.panel)init()初始化→start()開始→←stop()停止→destroy()消亡p
青春微凉离不开伤
2020-06-17 15:16:27
JAVA基礎筆記(二)
java.ioInputStream()輸入FileInputStream()從本地文件讀取數據字節pipedInputStream()從線程管道中讀
青春微凉离不开伤
2020-06-17 15:16:27
JAVA基礎筆記(一)
青春微凉离不开伤
2020-02-23 02:35:39
Spark Streaming實時流處理項目1 —— 分佈式日誌收集框架Flume的學習
驭风者1234
2019-02-19 06:41:12
mysql的replace into“坑”
jjhpeopl
2018-12-09 20:40:42
Collections.sort(List, Comparator)方法解析
jjhpeopl
2018-12-09 20:40:31
list的iterator大用處
jjhpeopl
2018-12-09 20:40:31