简化网站开发:SiteMesh小工具
在一个站点的制备,几乎所有的页面将具有相同的部分。导航栏例如,顶,每一页都是一样的,在底部的版权声明,每一页还都是一样的。
因此,在顶部导航栏的准备。第一种方法是直接复制的所有导航栏的代码,这种方法是在发育早期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小工具的更多相关文章
- C# JSON使用过程中开发的小工具
我在用JSON的过程中,经常要去看一下JSON的结构,而JSON串大不部分时候都是未格式化的数据,一次我不得不用一些网页上的在线解析和格式化工具来进行格式化查看,但是这些网页有时候并不好用:因此就结合 ...
- 简化bigdecimal计算的小工具类
简化bigdecimal计算的小工具类 如果我们要做一个加法运算,需要先将两个浮点数转为String,然后够造成BigDecimal,在其中一个上调用add方法,传入另一个作为参数,然后把运算的结果( ...
- WordPress 网站开发“微信小程序“实战(二)
原文链接:https://devework.com/wordpres...,转载请用明链注明来源,谢谢! 本文是"WordPress 开发微信小程序"系列的第二篇,本文记录的是开发 ...
- WordPress 网站开发“微信小程序“实战(三)
本文是"WordPress 开发微信小程序"系列的第三篇,本文记录的是开发"DeveWork+"小程序1.2 版本的过程.建议先看完第一篇.第二篇再来阅读本文. ...
- ANDROID开发实用小工具
分享一些 Android开发中的实用小工具,你有发现好工具吗? 来这里分享一下呗 一.find bugs 静态检查工具 http://findbugs.sourceforge.net/ FindBug ...
- 动手使用ABAP Channel开发一些小工具,提升日常工作效率
今天的故事要从ABAP小游戏说起. 中国的ABAP从业者们手头或多或少都搜集了一些ABAP小游戏,比如下面这些. 消灭星星: 扫雷: 来自我的朋友刘梦,公众号"SAP干货铺"里的俄 ...
- ChaosTool,iOS添加垃圾代码工具,代码混淆工具,代码生成器,史上最好用的垃圾代码添加工具,自己开发的小工具
最近在H5游戏项目中需要添加垃圾代码作混淆,提高过审机率.手动添加太费时费力,在网上并没有找到合适的比较好的工具,就自己动手写了一个垃圾代码添加工具,命名为ChaosTool. 扣扣交流群:81171 ...
- CodeMixerPro工具,完美替代ChaosTool,iOS添加垃圾代码工具,代码混淆工具,代码生成器,史上最好用的垃圾代码添加工具,自己开发的小工具
新工具 ProjectTool 已上线 这是一款快速写白包工具,秒级别写H5游戏壳包,可视化操作,极易使用,支持Swift.Objecive-C双语言 扣扣交流群:811715780 进入 Proje ...
- CodeMixer工具,完美替代ChaosTool,iOS添加垃圾代码工具,代码混淆工具,代码生成器,史上最好用的垃圾代码添加工具,自己开发的小工具
新工具 ProjectTool 已上线 这是一款快速写白包工具,秒级别写H5游戏壳包,可视化操作,极易使用,支持Swift.Objecive-C双语言 扣扣交流群:811715780 进入 Proje ...
随机推荐
- stm32的pwm波
- android SQLite 使用实例
Android作为眼下主流的移动操作系统,全然符合SQLite占用资源少的优势,故在Android平台上,集成了一个嵌入式关系型数据库-SQLite.假设想要开发 Android 应用程序,须要在 A ...
- HTTPS和SSL/TLS协议
要说清楚 HTTPS 协议的实现原理,至少需要如下几个背景知识.1. 大致了解几个基本术语(HTTPS.SSL.TLS)的含义2. 大致了解 HTTP 和 TCP 的关系(尤其是“短连接”VS“长连接 ...
- 图像数据的 normalization
Normalization的方法 matlab 工具函数(三)-- normalize(归一化数据) 1. 加载指定标准差的噪声 im_clean = double(imread('Lena512.p ...
- 探讨jsp相对路径和绝对路径
原文链接:http://blog.csdn.net/qq_37936542/article/details/79076768 问题:当在jsp使用相对路径引入其他js文件的时候,通过浏览器访问该页面一 ...
- [TypeScript] Catch unsafe use of "this" in TypeScript functions
this is probably the most tricky thing to use in JavaScript and therefore TypeScript. Fortunately th ...
- AndroidStudio实现JNI的示例详解
1. NDK简介 Android NDK 是在SDK前面又加上了“原生”二字,即Native Development Kit,因此又被Google称为“NDK” 1.1 NDK产生的背景 Androi ...
- Git提交到多个远程仓库(多看两个文档)
Git提交到多个远程仓库(多看两个文档) 一.总结 一句话总结: 二. Git提交到多个远程仓库(多看两个文档) 有两种做法,先看第一种 一.通过命令行进行操作 例如我有下面两个仓库: Mybatis ...
- js进阶 10-4 jquery中基础选择器有哪些
js进阶 10-4 jquery中基础选择器有哪些 一.总结 一句话总结: 1.群组选择器用的符号是什么? 群组选择器,中间是逗号 2.jquery中基础选择器有哪些? 5种,类,id,tag,群组, ...
- js进阶 10-2 JQuery基础语法是什么
js进阶 10-2 JQuery基础语法是什么 一.总结 一句话总结: 1.jquery语法超级简单:基础语法是:$(selector).action() 2.jquery选择的时候是带了引号的,肯定 ...