在一个站点的制备,几乎所有的页面将具有相同的部分。导航栏例如,顶,每一页都是一样的,在底部的版权声明,每一页还都是一样的。

因此,在顶部导航栏的准备。第一种方法是直接复制的所有导航栏的代码,这种方法是在发育早期easy但后期维护的噩梦,添加一个button,所有的页面都要改动。非常麻烦。

另外一种方法是将顶部导航栏专门写到一个文件里,全部的页面include这个文件。这样每一个页面都要写一个include语句。后期改动仅仅要改一个文件就能够了。可是这样的方法写出来的导航栏文件它不是一个完整的网页。而且每一个文件都要写上include语句,还是比較麻烦的。

为了让这样的页面的编写更加简单。SiteMesh应运而生。

SiteMesh通过装饰器模式攻克了这个问题。

以下就介绍装饰器的使用方法。

安装方法

第一步将sitemesh.xxx.jar放在/WEB-INF/lib中。

第二步在web.xml中增加SiteMesh的过滤器。

<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>

须要注意的是。假设你要和struts配合使用。那么filter-mapping要在struts之后,这样才干依照文件名称进行装饰,否则是依据action名称进行装饰。另外还要在filter-mapping中增加下面三行,目的是让struts在訪问jsp之前对文件进行装饰。假设不加的话是看不到装饰效果的。

<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
<dispatcher>INCLUDE</dispatcher>

第三步新建装饰器定义文件。文件的位置在/WEB-INF/decorators.xml。

内容例如以下:

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

这样SiteMesh插件就装好了。

插件的使用

首先编写一个很easy的装饰器文件,它的作用是在页面的头尾分别加上header和footer字样。当中\texttt{decorator:body}的作用是将真正的内容引进该文件。

<%@ taglib uri="http://www.opensymphony.com/sitemesh/decorator" prefix="decorator" %>
<html>
<head><title></title></head>
<body>
header
<decorator:body/>
footer
</body>
</html>

第二步在decorators.xml中声明该装饰器。

<?

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

>
<decorators defaultdir="/WEB-INF/decorators">
<decorator name="basic-theme" page="basic-theme.jsp">
<pattern>/test.jsp</pattern>
</decorator>
</decorators>

因为改动了web.xml,所以须要重新启动server才干看到效果。你会看至test.jsp头部和尾部添加header和footer。

版权声明:本文博客原创文章,博客,未经同意,不得转载。

简化网站开发:SiteMesh小工具的更多相关文章

  1. C# JSON使用过程中开发的小工具

    我在用JSON的过程中,经常要去看一下JSON的结构,而JSON串大不部分时候都是未格式化的数据,一次我不得不用一些网页上的在线解析和格式化工具来进行格式化查看,但是这些网页有时候并不好用:因此就结合 ...

  2. 简化bigdecimal计算的小工具类

    简化bigdecimal计算的小工具类 如果我们要做一个加法运算,需要先将两个浮点数转为String,然后够造成BigDecimal,在其中一个上调用add方法,传入另一个作为参数,然后把运算的结果( ...

  3. WordPress 网站开发“微信小程序“实战(二)

    原文链接:https://devework.com/wordpres...,转载请用明链注明来源,谢谢! 本文是"WordPress 开发微信小程序"系列的第二篇,本文记录的是开发 ...

  4. WordPress 网站开发“微信小程序“实战(三)

    本文是"WordPress 开发微信小程序"系列的第三篇,本文记录的是开发"DeveWork+"小程序1.2 版本的过程.建议先看完第一篇.第二篇再来阅读本文. ...

  5. ANDROID开发实用小工具

    分享一些 Android开发中的实用小工具,你有发现好工具吗? 来这里分享一下呗 一.find bugs 静态检查工具 http://findbugs.sourceforge.net/ FindBug ...

  6. 动手使用ABAP Channel开发一些小工具,提升日常工作效率

    今天的故事要从ABAP小游戏说起. 中国的ABAP从业者们手头或多或少都搜集了一些ABAP小游戏,比如下面这些. 消灭星星: 扫雷: 来自我的朋友刘梦,公众号"SAP干货铺"里的俄 ...

  7. ChaosTool,iOS添加垃圾代码工具,代码混淆工具,代码生成器,史上最好用的垃圾代码添加工具,自己开发的小工具

    最近在H5游戏项目中需要添加垃圾代码作混淆,提高过审机率.手动添加太费时费力,在网上并没有找到合适的比较好的工具,就自己动手写了一个垃圾代码添加工具,命名为ChaosTool. 扣扣交流群:81171 ...

  8. CodeMixerPro工具,完美替代ChaosTool,iOS添加垃圾代码工具,代码混淆工具,代码生成器,史上最好用的垃圾代码添加工具,自己开发的小工具

    新工具 ProjectTool 已上线 这是一款快速写白包工具,秒级别写H5游戏壳包,可视化操作,极易使用,支持Swift.Objecive-C双语言 扣扣交流群:811715780 进入 Proje ...

  9. CodeMixer工具,完美替代ChaosTool,iOS添加垃圾代码工具,代码混淆工具,代码生成器,史上最好用的垃圾代码添加工具,自己开发的小工具

    新工具 ProjectTool 已上线 这是一款快速写白包工具,秒级别写H5游戏壳包,可视化操作,极易使用,支持Swift.Objecive-C双语言 扣扣交流群:811715780 进入 Proje ...

随机推荐

  1. solaris 11 stdio.h: No such file or directory

    http://www.zendo.name/solaris-11-stdio-h%EF%BC%9A-no-such-file-or-directory/ Posted on 2012 年 3 月 23 ...

  2. 手机浏览器 input 输入框 数字

    其实很简单了啦 type="tel"就行了呢 如果是type="number"其实不好用

  3. linux下Oracle11g RAC搭建(一)

    linux下Oracle11g RAC搭建(一) 文档说明 作者    深蓝 项目 Visualbox下模拟RAC搭建(双节点)(Redhat5+Oracle11G) 环境 RedHat Enterp ...

  4. 小强的HTML5移动开发之路(47)——jquery mobile基本的页面框架

    一.单容器页面结构 <!DOCTYPE html> <html> <head> <title>Jquery mobile 基本页面框架</titl ...

  5. js中动态创建json,动态为json添加属性、属性值的实例

    如下所示: ? 1 2 3 4 5 6 7 var param = {};  for(var i=0;i<fields.length;i++){  var field = fields[i]; ...

  6. 【u031】租用游艇

    Time Limit: 1 second Memory Limit: 128 MB [问题描述] 长江游艇俱乐部在长江上设置了n 个游艇出租站1,2,-,n.游客可在这些游艇出租站租用游艇,并在下游的 ...

  7. Mysql存储过程中使用cursor

    一.表 学生表 CREATE TABLE `t_student` (    `stuNum` int(11) NOT NULL auto_increment,    `stuName` varchar ...

  8. tky项目第②个半月总结

    在上一篇半月总结中,介绍了tky项目的整体架构.项目的进展情况.项目的优势与开发中存在的问题等.今天来聊聊这半个月中,项目中发生的事情. 在这半个月中,项目中有了较大的突破:成功通过了国家评測中心的測 ...

  9. UE4.5.0的Kinect插件(Plugin)---插件使用说明<二>

    声明:所有权利保留. 转载必须说明出处:http://blog.csdn.net/cartzhang/article/details/43563959 一.起因: 写了个UE4的Kinect的插件,结 ...

  10. tcp注意点

    tcp注意点 tcp服务器一般情况下都需要绑定,否则客户端找不到这个服务器 tcp客户端一般不绑定,因为是主动链接服务器,所以只要确定好服务器的ip.port等信息就好,本地客户端可以随机 tcp服务 ...