1.加入包
sitemesh-2.3.jar
2.在web.xml中配置过滤器
<!-- 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>
</filter-mapping>
<!-- SiteMesh的过滤器配置信息 结束 -->
3.在web-info下建立文件decorators.xml,文件例如
<?xml version="1.0"
encoding="UTF-8"?>
<decorators
defaultdir="/decorators">
<!--
在excludes元素下指定的页面将不会由SiteMesh来装饰 -->
<excludes>
<pattern>/login.jsp</pattern>
<pattern>/js/*</pattern>
<pattern>/images/*</pattern>
<pattern>/decorators/*</pattern>
ajax等异步请求要写在这里
</excludes>
<!--
创建一个名为main的装饰器,该装饰器页面为main.jsp,
用于装饰pattern指定的URL的所有页面-->
<decorator name="admin"
page="admin/admin.jsp">
<pattern>/admin/welcome.action</pattern>
<pattern>/admin/pubinfo/*</pattern>
</decorator>
<decorator name="index"
page="index/index.jsp">
<pattern>/index/classify/index*</pattern>
</decorator>
</decorators>
4.在web-info下建立文件sitemesh.xml,文件例如
<sitemesh>
<property name="decorators-file" value="/WEB-INF/decorators.xml" />
<excludes file="${decorators-file}" />
<!-- Page Parsers :负责读取stream的数据到一个Page对象中以被SiteMesh解析和操作。-->
<page-parsers>
<parser default="true"
class="com.opensymphony.module.sitemesh.parser.DefaultPageParser" />
<parser content-type="text/html"
class="com.opensymphony.module.sitemesh.parser.FastPageParser" />
<parser content-type="text/html;charset=utf-8"
class="com.opensymphony.module.sitemesh.parser.FastPageParser" />
</page-parsers>
<decorator-mappers>
<!-- 可打印的装饰器,可以允许你当用http://localhost/test.html?printable=true方式访问时给出原始页面以供打印 -->
<!-- 其中printable1 与 decorators.xml中的装饰器printable1一致进行映射,若不添加此段,默认为printable -->
<mapper
class="com.opensymphony.module.sitemesh.mapper.PrintableDecoratorMapper">
<param name="decorator" value="printable1" />
<param name="parameter.name" value="printable" />
<param name="parameter.value" value="true" />
</mapper>
<mapper
class="com.opensymphony.module.sitemesh.mapper.ConfigDecoratorMapper">
<param name="config" value="${decorators-file}" />
</mapper>
</decorator-mappers>
</sitemesh>
由sitemesh.xml内容首行知道,decorators.xml是由sitemesh.xml关也就是说上面新建的
decorators.xml的位置和文件名是可以更改的,在更改之后,需要在sitemesh.xml更改其对应的路径。现在可以这样认为
sitemesh.xml只是为加载decorators.xml,只了decorators.xml可以变,其它内容都是固定的。
那sitemesh.xml又是由谁来加载的?很容易想到,sitemesh.xml可能像struts,spring等配置文件一样是在
web.xml中加载的。但是其实不是这样的。Sitemesh.xml文件的位置和文件名是固定的,也就是说sitemesh.xml的加载过程被
sitemesh
jar包封装起来了。那web.xml中就不需要配置sitemesh相关内容了?也不是,sitemesh的原理是拦截请求和响应,在java
web中有一个接口是专门弄这东西的。对,就是Filter(过滤器)。我们要在web.xml中加上sitemesh过滤器。
5.建立对应的模板main.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="http://www.opensymphony.com/sitemesh/decorator"
prefix="decorator"%>
<%@ taglib uri="http://www.opensymphony.com/sitemesh/page" prefix="page"%>
<%@include file="../frame/taglib.jsp"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title><decorator:title default="IP复用系统" /></title>
<link rel="stylesheet" type="text/css"
href="<%=basePath%>css/style.css">
<link rel="stylesheet" type="text/css"
href="<%=basePath%>css/calendar-win2k-cold-1.css">
<script type="text/javascript" src="${pageContext.request.contextPath }/js/IEFirefox.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath }/js/zDialog.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath }/js/zDrag.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath }/js/jquery-1.3.2.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath }/js/calendar.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath }/js/calendar-setup.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath }/js/jquery.cookie.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath }/js/calendar-zh.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath }/js/floatDiv.js"></script>
<script type="text/javascript">
function switchSysBar(){
if (document.getElementById("left").style.display=="")
{
document.getElementById("img1").src="<%=basePath%>images/main_30_1.gif";
document.getElementById("left").style.display="none";
document.getElementById("right").style.width="100%" ;
}
else
{
document.getElementById("img1").src="<%=basePath%>images/main_30.gif";
document.getElementById("left").style.display="" ;
document.getElementById("right").style.width="95%";
}
}
</script>
<decorator:head />
</head>
<body id="body" style="" >
<!-- 判断是否用户session状态 -->
<c:if test="${empty logdata_session_login_user}">
<script type="text/javascript">
window.location="<%=basePath%>login.jsp";
</script>
</c:if>
<div id="body" style="">
<table width="100%" height="100%" border="0" cellpadding="0"
cellspacing="0" class="cont_tab" >
<tr>
<td colspan="3">
<!--头部信息开始 -->
<div id="header">
<jsp:include page="top.jsp" flush="true" />
<!--头部信息结束 -->
</div>
</td>
</tr>
<tr>
<td id="left" width="" valign="top">
<jsp:include page="left.jsp" flush="true" />
</td>
<td height="100%" width="1px" background="<%=basePath%>images/main_27.gif" style="background-repeat: repeat-y;">
<img title="打开/关闭菜单" src="<%=basePath%>images/main_30.gif"
name="img1" width="4" style="cursor:pointer;" height="47" id=img1
onclick="switchSysBar();"/>
</td>
<td valign="top" width="95%" style="padding-right: 7px;" id="right">
<table width="100%" height="100%" border="0" cellpadding="0"
cellspacing="0" >
<tr>
<td>
<table width="100%" height="100%" border="0" cellpadding="0"
cellspacing="0" >
<tr >
<td width="100%" align="left" valign="top" style="">
<decorator:body />
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="3">
<div id="footer"><jsp:include page="down.jsp" flush="true" /></div>
</td>
</tr>
</table>
</div>
</body>
</html>
分享到:
相关推荐
sitemesh应用Decorator模式,用filter截取request和response,把页面组件head,content,banner结合为一个完整的视图。通常我们都是用include标签在每个jsp页面中来不断的包含各种header, stylesheet, scripts and ...
SiteMesh是一个Web页面布局修饰框架, 用于构建包含大量页面, 需要一致的外观样式(look/fell), 导航和布局机制的大型网站. SiteMesh应用Decorator模式,用filter截取request和response,把页面组件head,content,...
SiteMesh应用Decorator模式,用filter截取request和response,把页面组件head,content,banner结合为一个完整的视图。通常我们都是用include标签在每个jsp页面中来不断的包含各种header, stylesheet, scripts and ...
5. **页面集成**:在具体的JSP页面中,通过特定的标签或注解指示Sitemesh应用模板。 在实际应用中,我们可以通过提供的博客链接(已省略)来学习详细的整合步骤和示例代码。通过这个例子,你可以理解如何将这两个...
这两个组件的集成使得Struts2能够自动将Sitemesh应用于其返回的页面,实现页面的装饰。 具体整合步骤如下: 1. **引入依赖**:首先,在项目中添加Sitemesh和Struts2-Sitemesh-plugin的库。如果是Maven项目,可以在...
一个简单的SiteMesh应用通常包括以下步骤: 1. 配置SiteMesh过滤器:在web.xml中注册和配置SiteMesh Filter。 2. 创建装饰器页面:定义一个HTML模板,包含通用的页面布局。 3. 标记待装饰的页面:在JSP或HTML页面中...
标题:Sitemesh技术的应用 描述与标签:Sitemesh技术的应用 Sitemesh技术是Web开发领域中一种用于页面装饰的重要工具,尤其在Java Web应用程序中被广泛应用。其核心功能在于能够统一网站的外观风格,使不同功能...
SiteMesh是一款用于Web应用程序中的页面布局和装饰的框架。它采用Decorator模式,通过过滤器(filter)拦截请求和响应,将不同的页面组件如头部(head)、主体内容(content)以及横幅(banner)等组合成一个完整的...
SiteMesh 是一个开源的Web应用程序布局和装饰框架,主要用于解决Web应用中的页面布局问题。它通过拦截HTTP请求,将页面内容与预定义的布局模板相结合,实现统一的页面头部、底部和侧边栏等元素,从而提高网站的整体...
SiteMesh 是一个开源的Web应用程序框架,主要用于帮助开发者实现页面布局和装饰功能。它通过拦截HTTP请求,将页面内容与布局模板相结合,从而提供了一种简单有效的方式来管理和控制Web应用的外观和感觉。在Web开发中...
通过深入学习和实践这个“sitemesh框架简单例子”,你将能够熟练地运用Sitemesh来构建更加专业且美观的Web应用。 总的来说,Sitemesh是一个强大且灵活的工具,它简化了Web页面布局的管理,让开发者能够专注于业务...
页面装饰器(Sitemesh)是一种广泛用于Web应用的开源框架,它的主要功能是提供页面布局和装饰功能,使得开发者可以方便地实现统一的页面头部、尾部、侧边栏等元素,从而提高网站的整体风格一致性。在本实例中,我们...
Java Sitemesh是一个开源的页面布局和装饰框架,它的主要目标是帮助开发者统一网站的外观和感觉,提高代码复用性,并...学习和掌握Sitemesh能让你在开发Java Web应用时更加得心应手,提升项目的整体质量和用户体验。
**Sitemesh3** 是一个开源的网页布局和装饰框架,用于Java Web应用程序。它主要目的是帮助开发者统一网站的外观和感觉,通过提供一种简单的方式来装饰(或模板化)整个Web应用中的页面。Sitemesh3是Sitemesh项目的第...
SiteMesh是一款网页布局和装饰器框架,也是一个网络应用程序整合框架,它可以用来维护那些很多页面,并且希望保持所有页面的布局、链接和风格一致的大型网站应用整合与维护。使用SiteMesh可以抽象出页面中的公共布局...
**sitemesh-2.2.1.jar** 是一个用于Web应用程序界面布局的开源框架,由OpenSymphony团队开发。Sitemesh的主要功能是提供页面装饰能力,它可以帮助开发者统一网站的外观和感觉,实现页面模板和内容的分离。通过在...
【sitemesh3-demo】是一个基于Sitemesh3框架的示例项目,旨在展示如何在Web应用程序中有效地实现页面布局和装饰功能。Sitemesh是一个开源的Java Web应用框架,主要用于增强网页的外观和结构,通过定义装饰模板,可以...
Sitemesh 是一个开源的网页布局和装饰框架,它主要负责处理Web应用程序的页面布局,使得开发者可以集中精力于应用的核心功能,而不用过多关注页面样式的一致性和美观性。Sitemesh 提供了一种优雅的方式来组织和装饰...