sitemesh的使用

由于最近项目的原因,接触到了sitemesh。

SiteMesh是一个用来在JSP中实现页面布局和装饰(layout and decoration)的框架组件,能够帮助网站开发人员较容易实现页面中动态内容和静态装饰外观的分离。提供了一种在网站中更有效的组织页面布局的方式。

SiteMesh设计思想是,用户发送request至服务器,服务器根据此request生成动态数据,生成网页,准备返回给客户端。就在返回前,SiteMesh进行拦截,对此网页进行解析,将title、body等部分拆解出来,套上模板后,再返回给客户端。由于SiteMesh在返回客户端的最后一步工作,此时的网页已经具备了标准的html网页格式,因此SiteMesh只需解析标准的html网页,无需考虑各个Web应用是应用了JSP、ASP,还是Velocity技术,相当灵活。

SiteMesh使用了Decorator的设计模式。

下面我就用一个通俗易懂的例子告诉大家怎么使用它。

这个就是我这个项目的结构,jsp页面都可以随意放只要指明路径就可以了,decorators.xml放在WEB-INF下面。

首先是decorators.xml的书写:

<?xml version="1.0" encoding="utf-8"?>
<decorators defaultdir="/decorators">
    <!-- 用第一套模板 -->
	<decorator name="basic-theme" page="basic-theme.jsp">
		<pattern>/data/*</pattern>
	</decorator>
	<!-- 用第二套模板 -->
	<decorator name="basic-theme2" page="basic-theme2.jsp">
		<pattern>/data2/*</pattern>
	</decorator>
	<!-- 不做任何装饰 -->
	<decorator name="none">
		<pattern>/data3/*</pattern>
	</decorator>
</decorators>

你可以选择你自己的模板在page里面定义,<pattern>里面的是你要作用的页面的路径。

下面是aa.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>jsp</title>
  </head>
  <body>
    我爱中国!
  </body>
</html>

aa2.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>jsp</title>
  </head>
  <body>
    我爱中国2!
  </body>
</html>

aa3.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>jsp</title>
  </head>
  <body>
    我爱中国3!
  </body>
</html>

最重要的xml的配置:

加上下面一句

 <!-- 过滤作用,使发送给客户端的页面通过decorator装饰再返回 -->
  <filter>
  	<filter-name>sitemesh</filter-name>
  	<filter-class>com.opensymphony.sitemesh.webapp.SiteMeshFilter</filter-class>
  </filter>
  <filter-mapping>
  	<filter-name>sitemesh</filter-name>
  	<url-pattern>/*</url-pattern>
  </filter-mapping>

下面是装饰页面basic-theme.jsp

basic-theme2.jsp

下面来看看效果图:

下面是用了第一个装饰模板的页面图。

下面是用了第二个装饰模板的页面。

下面是没有用装饰模板的页面。

看到这里相信大家应该对sitemesh很期待了吧,赶紧自己去试试吧。这是jar包下载地址。

sitemesh.jar

sitemesh的使用

时间: 2024-09-12 22:08:20

sitemesh的使用的相关文章

(转载)SiteMesh的使用

SiteMesh的介绍就不多说了,主要是用来统一页面风格,减少重复编码的. 它定义了一个过滤器,然后把页面都加上统一的头部和底部. 需要先在WEB-INF/lib下引入sitemesh的jar包:http://wiki.sitemesh.org/display/sitemesh/Download .这里使用2.4版本. 过滤器定义: 在web.xml中 <filter> <filter-name>sitemesh</filter-name> <filter-cla

springmvc sitemesh json问题

参考: 解决方法: <sitemesh> <mapping path="/*" decorator="/WEB-INF/views/template/template.jsp"/> <!---排除对json的装饰--> <mapping path="/json/*" exclue="true"/> </sitemesh> $.post('/json/submit.js

SiteMesh, SpringMVC, Shiro 配置

1. 首先在在web.xml文件中,加入SiteMesh和shiro的过滤器,保证SiteMesh的过滤器配置放在shiro的过滤器后面,不然的话,shiro的标签不能正确处理. <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.

jsp:param和meta来控制导航选中与否,页面组装器sitemesh

A.jsp B.jsp C.jsp decorators.xml 其中A.jsp是某项功能具体的jsp,A包含B,C是默认模板包含B 注:需要了解sitemesh和decorators页面组装器的主要知识http://www.cnblogs.com/luotaoyeah/p/3776879.html 需要下载sitemesh的jar包,不用组装器也可以实现 http://blog.csdn.net/liu251/article/details/2797488 decorators.xml中主要内

关于sitemesh和freemark在struts2中的一些问题总结

最近刚开始工作,首先让我在熟悉公司编程环境的前提下做一些简单的增删改查,在此总结一些这些天遇到的问题. 1,在刚开始建表的时候,我在oracle数据库中设置的主键id为四位的number类型,对应的实体类中id声明为Integer类型的,结果遇到的问题,在页面显示的时候,数字显示总是千分位上为一个,做删除操作的时候,id值一直传递不过去,后来重新修改了表结构,把id改为两位的number类型,id声明为int类型,问题就解决了(还未找出原因?): 2,关于sitemesh装饰器的拦截,在我使用a

关于Springmvc中include与Sitemesh装饰器的基本使用

关于Springmvc中include与Sitemesh装饰器的使用 !!!转载请注明出处=>http://www.cnblogs.com/funnyzpc/p/7283443.html 静态包含:example:<%@include file="xxx.jsp"%> 文件的包含是发生在 jsp向servlet转换时期 ,相当于将jsp编译成html静态文件,由于对包含的文件不再编译(直接拷贝到父页面),则只产生一个class文件. 动态包含:example<j

sitemesh

Sitemesh 3 的使用及配置 http://www.cnblogs.com/luotaoyeah/p/3776879.html 老版本的: http://blog.csdn.net/bluishglc/article/details/5969905 http://www.blogjava.net/gdufo/archive/2008/08/04/219996.html

简化网站开发:SiteMesh插件

在编写一个网站时,几乎所有的页面都会有相同的部分.比如顶部的导航栏,每个页面都是一样的,底部的版权声明,每个页面也都是一样的. 那么在编写顶部导航栏的时候,第一种方法就是直接复制导航栏的全部代码,这种方法初期开发很简单但是后期维护简直就是噩梦,要是导航栏要增加一个按钮,所有的页面都要修改,非常麻烦. 第二种方法是将顶部导航栏专门写到一个文件中,所有的页面include这个文件.这样每个页面都要写一个include语句.后期修改只要改一个文件就可以了.但是这种方法写出来的导航栏文件它不是一个完整的

使用 sitemesh/decorator装饰器装饰jsp页面(原理及详细配置)

摘要:首先这个Decorator解释一下这个单词:“装饰器”,我觉得其实可以这样理解,他就像我们用到的Frame,他把每个页面共有的东西提炼了出来,也可能我们也会用各种各样的include标签,将我们的常用页面给包括进来:比如说页面的top,bottom这些每个页面几乎都有,而且都一样,如果我们在每个页面都include,可以发现我们的程序有很多冗余,重复.相比之下装饰器给我们提供了一个较好的选择,他在你要显示的页面根本看不出任何include信息,可以说完全解耦. 一.SiteMesh介绍 S

sitemesh body 失效的问题

<%@ page contentType="text/html;charset=UTF-8"%> <%@ include file="/WEB-INF/views/include/taglib.jsp"%> <%@ taglib prefix="sitemesh" uri="http://www.opensymphony.com/sitemesh/decorator" %> <!DOC