简化网站开发:SiteMesh插件

在编写一个网站时,几乎所有的页面都会有相同的部分。比如顶部的导航栏,每个页面都是一样的,底部的版权声明,每个页面也都是一样的。

那么在编写顶部导航栏的时候,第一种方法就是直接复制导航栏的全部代码,这种方法初期开发很简单但是后期维护简直就是噩梦,要是导航栏要增加一个按钮,所有的页面都要修改,非常麻烦。

第二种方法是将顶部导航栏专门写到一个文件中,所有的页面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插件就装好了。

插件的使用

首先编写一个非常简单的装饰器文件,它的作用是在页面的头尾分别加上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,所以需要重启服务器才能看到效果。你会看到test.jsp的头部和尾部分别加上了header和footer。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值