SiteMesh使用

[size=large]
什么是SiteMesh?
SiteMesh是OpenSymphony下的一个项目,是基于PageFilter,Servlet过滤器的通用组件.
[/size]

[size=large]
SiteMesh为我们带来什么?
我們可以想像一下,当我们的应用程序有大量的页面时候,为每个页面include我们各种各样的标签库,引入的js和css等样式,这将会成为重复性的工作,而且只要其中一个标签库进行了更新升级,所有页面的标签声明都需要重新更改,这项工作无疑是恐怖而且毫无技术含量的,SiteMesh就是为了帮助我们解决这个问题,把共有的标签例如js,css,struts-tags等重复性的声明抽象到一个页面当中,从而实现集中处理,增加维护性和解除页面间的耦合.
[/size]

[size=large]
SiteMesh原理:
SiteMesh应用了Decorator模式,用filter截取request和response,把页面组件head,content,banner结合为一个完整的视图。通常我们都是用include标签在每个jsp页面中来不断的包含各种header, stylesheet, scripts and footer,现在,在SiteMesh的帮助下,我們可以不再编写那些重复性的代码,从而集中在一个地方进行管理.容器接收到页面请求时,会把请求传递给PageFilter,PageFilter收集应用程序的响应细节,生成自定义的响应对象,然后连同请求一起传递给web应用程序.web应用程序把响应资源写入到自定义响应对象里,再返回给PageFilter.
[/size]

[size=large]
SiteMesh使用:
本事例使用基于Struts2来进行编写
1.首先在我们的项目当中添加Maven的依赖
[/size]

<dependency>
<groupId>opensymphony</groupId>
<artifactId>sitemesh</artifactId>
<version>2.4.2</version>
<type>jar</type>
<scope>compile</scope>
</dependency>

<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-sitemesh-plugin</artifactId>
<version>2.2.3</version>
<type>jar</type>
<scope>compile</scope>
</dependency>


[size=large]2.在web.xml文件中增加如下配置[/size]

<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>*.action</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
<dispatcher>INCLUDE</dispatcher>
</filter-mapping>


[size=large]3.在WEB-INF建立decorators.xml,该文件描述各个装饰器页面和如何过滤页面[/size]

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


<!-- defaultdir 属性为通用页面存放的路径 -->
<decorators defaultdir="/WEB-INF/content/base">

<!-- excludes 为哪些页面不需要进行装饰,这通常结合popup来使用 -->
<excludes>
<pattern>*no-decorate*</pattern>
<pattern>/login*</pattern>
</excludes>

<!-- decorator为指定装饰页面的名称和路径 -->
<decorator name="main" page="main.jsp">
<!-- pattern 为要过滤哪些页面? * 代表所有页面都进行过滤-->
<pattern>*</pattern>
</decorator>

<decorator name="printable" page="printable.jsp"/>
</decorators>

[size=large]以下为main.jsp代码[/size]

<!--
当使用了SiteMesh后,本页面main.jsp就会变成所有页面的模板
我们可以在这个页面中引入各种的css,js和其他的页面,
亦可以在这里使用jsp的include标签引入其他的页面,
更甚者可以在这里设定全局的js,例如jQuery的$.(document).ajaxStart(function(){})
-->
<html>
<head>
<!-- decorator:title可以将被过滤的页面的title填充到这里 -->
<title><decorator:title/></title>
<!-- decorator:head 可以将被过滤的页面中的head填充到这里 -->
<decorator:head />
</head>
<body>
<div class="content">
<!-- decorator:head 可以将被过滤的页面中的body填充到这里 -->
<decorator:body />
</div>


[size=large]总结:
使用了SiteMesh后,更集中的管理了各個頁面的标签,css,js的引入,虽然在实际开发当中一般会首先固定各个技术使用的版本,但由于需求的变更和技术的更新发展,有时候不得不更新所使用的版本,大量分散在不同页面的引入标签修改起来简直就是噩梦般的事情,而且SiteMesh的简单易用,我们何乐而不为的去使用SiteMesh呢?[/size]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕业设计,基于SpringBoot+Vue+MySQL开发的公寓报修管理系统,源码+数据库+毕业论文+视频演示 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本公寓报修管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高事务处理效率,达到事半功倍的效果。此公寓报修管理系统利用当下成熟完善的Spring Boot框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的MySQL数据库进行程序开发。公寓报修管理系统有管理员,住户,维修人员。管理员可以管理住户信息和维修人员信息,可以审核维修人员的请假信息,住户可以申请维修,可以对维修结果评价,维修人员负责住户提交的维修信息,也可以请假。公寓报修管理系统的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助管理者高效率地处理工作事务的同时,也实现了数据信息的整体化,规范化与自动化。 关键词:公寓报修管理系统;Spring Boot框架;MySQL;自动化;VUE
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值