`
coder_hero
  • 浏览: 10999 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
社区版块
存档分类
最新评论

SiteMesh入门

    博客分类:
  • Web
阅读更多

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

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

     SiteMesh使用了Decorator的设计模式。

 

本文为大家展示一个简单的SiteMesh例子。

     首先创建一个web工程.名字就叫做SitemeshSample.sitemesh-2.3.jar, commons-collections.jar放到lib目录下。

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>

    这里定义了一个过滤器.所有的请求都交由sitemesh来处理

 

     WEB-INF下创建一个decorators.xml文件,内容如下:

    <?xml version="1.0" encoding="UTF-8"?>

    <decorators defaultdir="/decorators">

        <decorator name="main" page="main.jsp">

           <pattern>/*</pattern>

        </decorator>

    </decorators>

    这是定义了模板页,也就是所有页面在返回给客户端之前,先在这里加上装饰,套上模板。

defaultdir="/decorators"说明了模板页的路径。<decorator name="main" page="main.jsp">模板页的名称。    <pattern>/*</pattern>表示对所有的response进行处理

 

    web下面建一个文件夹取名decorators.decoratots下面创建上面定义的模板页面main.jsp,内容如下:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<%@ taglib uri="http://www.opensymphony.com/sitemesh/decorator" prefix="decorator"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

    <head>

       <title><decorator:title />

       </title>

    <body>

       <p>Add head decorator...</p>

       <decorator:body />

       <p>Add foot decorator...</p>

    </body>

</html>

说明:

<%@ taglib uri="http://www.opensymphony.com/sitemesh/decorator" prefix="decorator"%>

此处为decorator标签的声明。因为我们下面要使用到它

<decorator:title />

把请求的原始页面的title内容插入到<title></title>,比如我们要请求index.jsp页面的时候。会把index.jsp中的title的内容放入到这里

<decorator:body />

把请求的原始页面的body内容插入到<body></body>,发现没有我们在这句的前面加上了<p>Add head decorator...</p><p>Add foot decorator...</p>

相当于给我们请求的页面的body内容加上了头部和尾部.实现了模板功能。

 

WEB-INF下创建我们要请求访问的页面index.jsp,内容如下:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

    <head>

       <title>SiteMesh Sample Site</title>

    </head>

 

    <body>

       Welcome to the SiteMesh sample...

    </body>

</html>

web工程部署到tomcat容器中。

输入http://localhost:8080/SitemeshSample/index.jsp

 

页面效果如下:

Add head decorator...

Welcome to the SiteMesh sample...

Add foot decorator...

不难发现,我们index.jsp中只有Welcome to the SiteMesh sample... 一句。但是在返回给我们之前套上了main.jsp模板页。在它的前面和后面分别加上了一句话。通过Sitemesh我们可以很容易实现页面中动态内容和静态装饰外观的分离。

 

 

 

 

 

 

 

 

分享到:
评论
3 楼 tony2336 2008-12-17  
谢谢,但是有没有相关的文字材料呢!
2 楼 tzq88818453 2008-09-21  
你可以回去种田了
1 楼 pacer123 2008-05-08  
的确不错,值得学习,LZ能否对sitemesh.xml文件中进行下说明,看到项目中应用到了。但具体的作用不太了解  谢谢

相关推荐

    SiteMesh入门学习

    SiteMesh入门学习,很好的学习总结,让你在短时间里掌握sitemesh

    sitemesh入门demo

    sitemesh入门demo。博客 Sitemesh入门和使用笔记 对应源码

    sitemesh入门教材

    sitemesh 入门教材 对初学者很有用,里边有实例 freemarker Java

    SiteMesh入门示例

    NULL 博文链接:https://cuisuqiang.iteye.com/blog/2066166

    sitemesh框架简单例子

    很简单的sitemesh入门教程,希望对大家有所帮助

    struts2-sitemesh_入门收集

    struts2-sitemesh_入门收集struts2-sitemesh_入门收集

    SIteMesh介绍 配有案例

    这是SiteMesh入门级别的资料,配有一个较为全面的案例,仅供入门级别的朋友下载。

    sitemesh装饰器入门

    NULL 博文链接:https://mgxy123.iteye.com/blog/1565892

    siteMesh demo 例子

    入门的demo...siteMesh与freemarker结合。。 siteMesh与velocity结合。。并且在siteMesh.xml用了不同的装饰器。。每个装饰器都有注释。。可以帮助理解。。请看readme.txt

    jsf + hibernate + spring入门用例

    其中还用到了sitemesh技术。 是初学者入门的一个好例子。 功能流程描述: 因为是入门的小例子,数据库表只用了一个表。 数据库:test 表: user 字段: id,username,password 就是一个输入用户名和密码,如果正确...

    Grails入门指南 gswg_source

    Grails是一套用于快速开发Web应用系统的框架,基于Groovy动态语言。并构建在开源技术如:Spring,Hibernate和SiteMesh之上。

    Java高手真经_应用框架卷_Java_Web核心框架.part1.rar

     表现层框架struts 1:讲解struts 1的入门配置、核心组件、标签库、国际化、数据校验、sitemesh集成、数据库开发技术,并分别实现与hibernate、ibatis持久层框架的集成开发。..  表现层框架struts 2:讲解struts 2...

    Java高手真经_应用框架卷_Java_Web核心框架.part2.rar

     表现层框架struts 1:讲解struts 1的入门配置、核心组件、标签库、国际化、数据校验、sitemesh集成、数据库开发技术,并分别实现与hibernate、ibatis持久层框架的集成开发。..  表现层框架struts 2:讲解struts 2...

    Java高手真经_应用框架卷_Java_Web核心框架.part3.rar

     表现层框架struts 1:讲解struts 1的入门配置、核心组件、标签库、国际化、数据校验、sitemesh集成、数据库开发技术,并分别实现与hibernate、ibatis持久层框架的集成开发。..  表现层框架struts 2:讲解struts 2...

    Java高手真经 应用框架卷 源码

    表现层框架Struts 1:讲解Struts 1的入门配置、核心组件、标签库、国际化、数据校验、Sitemesh集成、数据库开发技术,并分别实现与Hibernate、iBATIS持久层框架的集成开发。..表现层框架Struts 2:讲解Struts 2的...

    Java后端知识图谱帮助Java初学者成长.rar

    本文首先会给出关于 java后台开发 和 前端适配 的一些建议学习路线,接着简单解释一些应用到的高频技术,帮助大家理解和学习,算是一个入门篇。 2.Java后台开发知识一览 1、后端 WEB服务器:Weblogic、Tomcat、...

    [Struts 2权威指南--基于WebWork核心的MVC开发(高清完整版) 1/12

    第10章 Struts 2的标签库,第11章 Struts 2的Ajax支持,第12章 使用FreeMarker充当表现层,第13章 整合Spring,第14章 整合JSF,第15章 整合SiteMesh,第16章 整合JasperReports,第17章 整合JFreeChart,第18章 ...

    google-app-engine-jappstart:Google App Engine的Java框架

    入门指南jappstart是一个基于Spring,Spring Security和Sitemesh的Google App Engine Java框架。 该项目旨在成为Google App Engine Java应用程序的起点。 它不是传统意义上的框架,而是旨在为开发人员可以轻松扩展的...

    Appfuse教程Appfuse开发.pdf

    Appfuse是由Matt Raible开发的一个指导性的入门级J2EE框架,它对如何集成流行的Spring、Hibernate、iBatis、struts、Xdoclet、junit 等基础框架给出了示范。提供了对Taperstry和JSF的支持。  AppFuse是一个集成了...

    Grails 中文参考手册

    6.2.4 使用Sitemesh布局 6.3 标签库 6.3.1 简单标签 6.3.2 逻辑标签 6.3.3 迭代标签 6.3.4 标签命名空间 6.4 URL映射 6.4.1 映射到控制器和操作 6.4.2 嵌入式变量 6.4.3 映射到视图 6.4.4 映射到响应代码 6.4.5 映射...

Global site tag (gtag.js) - Google Analytics