SiteMesh详解

本文深入探讨了Sitemesh框架,介绍了其作为Java web应用页面装饰器的主要功能和使用方法,帮助读者理解如何利用Sitemesh提升网页布局和设计的一致性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.Sitemesh简介

        Sitemesh是一个网络布局和修饰的框架,基于filter技术.
      作用:利用它可以将网页的内容和页面结构分离,以达到页面结构共享的目的,减少重复代码的编写.(可能看到这儿不是很清楚,下面配几张图加以解释).
     举个应用的场景: 点击下图上方的菜单.在浏览器的下方会显示出相应的界面.此时你会发现上面菜单栏的内容是一样的,而下面显示的内容则会根据你所点击的菜单发生变化. 按照常规思路,你会写很多不同的jsp页面,然后根据菜单的点击而跳转到不同的页面.但这样写你会发现一个问题,代码大量冗余.针对这种现象,人们编写了sitemesh框架.在这种框架下,关于菜单栏的代码只要写一次就ok了,大幅度降低了代码量.
     



2.Sitemesh环境搭建

       第一步:导入jar包(我当时的jar包版本是sitemesh-2.4.1.jar   不会导包的建议百度)
               jar包下载地址:链接: https://pan.baidu.com/s/1pKKxl6z 密码: smw8
     第二步:修改WEB-INF目录下的web.xml,添加一个filter.(上文中也提到过sitemesh框架就是基于filter). filter代码示例如下:
  <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>

     第三步:在WEB-INF下添加decorators.xml文件,进行一系列的配置.(也就是要修饰的是哪些页面以及修饰页面的位置和名称)
          配置中一些参数的意义: 
               defaultdir="/decorators"表示修饰文件的位置
               page="main.jsp"表示修饰文件名
               /*表示修饰所有的页面

<?xml version="1.0" encoding="ISO-8859-1"?>

<decorators defaultdir="/decorators">
    <decorator name="main" page="main.jsp">
        <pattern>/*</pattern>
    </decorator>
</decorators>

      第四步:既然要修饰页面,就要有修饰的模板.所以第四步的任务就是建立模板(也就是上文所说到的修饰文件).步骤三中已经说到修饰文件的位置名称问题.所以按照步骤三中的配置文件,将修饰文件创建出来.本文中,在WEB-INF下创建decorators文件夹,在文件夹里创建main.jsp.
          此处要说明的一点,这些文件或文件夹的名称是可以改变的,前提是在  decorators.xml将参数配置好,具体参考步骤三.
         main.jsp的具体实现在这里就不给出了.大家可以依靠自己的需求进行编辑.


3.Sitemesh原理

   在这里简单的介绍一下原理吧,并不深入探讨.(并没有啥意义)
    首先请求被Sitemesh的filter拦截,并把数据包装成一个page对象,接着去查询decorator.xml文件,如果判断出该请求的页面为所修饰的页面,则应用装饰器,如果不是的话,则发送的是没经过修饰的页面.......
       emmmm........................
   
        


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值