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

因此,在顶部导航栏的准备。第一种方法是直接复制的所有导航栏的代码,这种方法是在发育早期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. php 转义html标签 反转html标签 符号

    $a = '<strong>123</strong>';     //假设这是html代码$b =  htmlspecialchars($a);          //将< ...

  2. 【38.02%】【codeforces 625B】War of the Corporations

    time limit per test 1 second memory limit per test 256 megabytes input standard input output standar ...

  3. 手动打war包进行部署测试

    有的时候项目跑不起来但是又不知道tomcat问题还是其他问题,往往新建个项目,打成war进行部署.今天找到个好方法,手动打成war,然后进行部署测试. image.png image.png 创建一个 ...

  4. nginx源代码分析--ngx_http_optimize_servers()函数

    这个函数做了连部分工作:1)以port为入口点 将实用的信息存放到hash表内 2)调用ngx_http_init_listening()函数 对port进行监听 1. 在ngx_http_core_ ...

  5. 配置Apache支持PHP5

    环境:window 7.Apache/2.2.19 (Win32) PHP/5.2.9-1 1.配置server名称 将里面的 #ServerName localhost:80 凝视去掉就可以. 又一 ...

  6. js如何实现动态点击改变单元格颜色?

    js如何实现动态点击改变单元格颜色? 一.总结 1.通过table的rows属性,遍历表格所有行,然后通过cells属性,遍历每一行中的单元格. 2.遍历的过程中,动态的为每一个单元格定义单击事件,改 ...

  7. js获取input file路径改变图像地址

    版权声明:好歹是我写的或者总结的或者抄的,总待给我个名份吧~ https://blog.csdn.net/sangjinchao/article/details/52250318 html代码 < ...

  8. JQuery 多个checkbox 只选中一个

    <form id="common-form"> <input name="check1" type="checkbox"/ ...

  9. 【ORACLE】spfile失落的处理

    ************************************************************************ ****原文:blog.csdn.net/clark_ ...

  10. 【Codeforces Round #438 B】Race Against Time

    [链接]h在这里写链接 [题意] 时针.分钟.秒针走不过去. 问你从t1时刻能不能走到t2时刻 [题解] 看看时针.分钟.秒针的影响就好. 看看是不是在整时的位置就好. 然后看看影响到x不能到y; 然 ...