第一步:
在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