下面是我学习sitemesh的时候总结的一些笔记,我直接从word文档中拷贝过来的,有什么问题,希望大家指出,我们一起讨论。
SiteMesh笔记
SiteMesh
是什么?
SiteMesh用来装饰网页。使网页具有统一的布局。这对于实际项目有很大的帮助。SiteMesh是基于Java、J2EE和XML的开源框架,依赖于从Servlet
2.3版本里引入的新功能——过滤器(Filters),它的主要思想是装饰设计模式,把变化的和不变的分离开来,用不变的去修饰各种变化的内容。
SiteMesh通过拦截静态活或动态网页的request请求。从而处理网页,给网页加上自定义的装饰。
使用SiteMesh会不会影响网页的访问速度呢?siteMesh官网上说是基本不影响,因为SiteMesh的处理速度是非常快的。
还可以通过扩展SiteMesh来达到用户的需求。
使用SiteMesh
使用siteMesh的步骤为:
1.将SiteMeshjar 包放到WEB-INF/lib目录下面。
2.编写网页装饰页面(decorator.html)。
3.在web.xml文件中添加SiteMesh过滤器。
4.编辑需要装饰的web页面。
5.编辑装饰规则文件sitemesh.xml,即配置那些文件被哪个或哪些装饰文件装饰。放在WEB-INF/目录下。
Decorator
Tags:
1.<decorator:head/>插入原始页面(被包含页面)的<head>标签中的内容,没有属性
2.<decorator:body/>插入原始页面(被包含页面)的<body>标签中的内容
注释:装饰jsp:<body
onload = "<decorator:getProperty property=’body.onload’/>">可以在装饰页
面body中使用如上语法来获得被装饰页面(被包含页面也就是原始页面)的事件
3.<decorator:title [default =
""]/>插入被装饰页面的title标签中的内容
default属性:当没有在被装饰页面找到title中有内容时此值被插入
4.<decorator:getProperty
property = ""
[default=""][writeEntireProperty=""]/>插入原始页面的property属性指定的同名的属性
property:指定哪个属性将要被插入
default:如果没有发现指定的属性,则插入此值
writeEntireProperty:表示是否将(空格 属性 =
“属性名”)整个插入,允许时的值是true或yes或1
下面是writeEntireProperty属性的一个例子
装饰页面: <body
bgcolor = "White"<decorator:getProperty property =
"body.onload" writeEntireProperty="true"/>
被装饰页面:<body
onload = "document.someform.somefield.focus();">
经过SiteMesh装饰后的效果:<body
bgcolor = "White" onload =
"document.someform.somefield.focus();">
HtmlPage接口对此的解释为:sitemesh允许一个页面被装饰器装饰,也允许从中提取属性值
5.<decorator:userPage
id = ""/>实例化装饰器页面为Page对象,并赋值给一个变量
id属性是必须有的
Page
Tags
1.<page:applayDecorator
name = "" [page = "" title = ""]>
</page:applayDecorator>
应用一个装饰器到指定的内容,这个内容可能是被内联的一个页面,或者是page属性指定的任何一个页面
name:被包含页面要应用的那个装饰器的名字
page:被包含的页面
title:覆盖被包含页面的title标签的内容
2.<page:param
name = ""/>
解析一个属性到装饰器,这个属性会覆盖原有页面中的属性,此标签只能用于<page:applyDecorator>标签内容
name:指定哪个属性的值要被重写
SiteMesh Demo
装饰页面:用来装饰web页面的页面
<%@ taglib uri="http://www.opensymphony.com/sitemesh/decorator"
prefix="decorator"%>
<%@ taglib uri="http://www.opensymphony.com/sitemesh/page"
prefix="page"%>
<html>
<head>
<title>装饰页面<decorator:title default="包含页的标题---title"/></title>
</head>
<body>
-------原始页也就是包含页只有页头和页脚-------
<br/>
<br/>
<br/>
包含页面的body部分(实时改变页面)-----decorator.jsp
<br/>
<decorator:body/>========被包含页面的body部分
<br/>
<br/>
<br/>
-------原始页也就是包含页只有页头和页脚-------
</body>
</html>
==============================================================
在web.xml文件中添加SiteMesh过滤器
<!-- 定义SiteMesh的核心过滤器 -->
<filter>
<filter-name>sitemesh</filter-name>
<filter-class>com.opensymphony.module.sitemesh.filter.PageFilter</filter-class>
</filter>
<!-- 定义ActionContextCleanUp过滤器 -->
<filter>
<filter-name>struts-cleanup</filter-name>
<filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp</filter-class>
</filter>
<!-- 定义SiteMesh过滤器链 -->
<!-- 排在第一位的过滤器是:ActionContextCleanUp过滤器 -->
<filter-mapping>
<filter-name>struts-cleanup</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- 排在第二位的过滤器是:SiteMesh的核心过滤器 -->
<filter-mapping>
<filter-name>sitemesh</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
===============================================================
编辑装饰规则文件decorator.xml
<!-- 装饰器配置文件 -->
<!-- defaultdir指定的装饰器页面所在路径 也就是decorator.jsp页面所在的路径-->
<decorators defaultdir="/decorator">
<!-- 在excludes元素下指定的页面将不会由SiteMesh来装饰 -->
<excludes>
</excludes>
<!-- 创建一个名为decorator的装饰器,该装饰器页面为decorator.jsp,
用于装饰pattern指定的URL的所有页面-->
<decorator name="decorator"
page="decorator.jsp">
<pattern>/*</pattern>
</decorator>
</decorators>
============================================================
编辑需要装饰的web页面
<html>
<head>
<title>SiteMesh----main.jsp页面</title>
</head>
<body>
被包含页面的body部分------main.jsp
</body>
</html>
分享到:
相关推荐
maxwell simplorer simulink 永磁同步电机矢量控制联合仿真,电机为分数槽绕组,使用pi控制SVPWM调制,修改文件路径后可使用,软件版本matlab 2017b, Maxwell electronics 2021b 共包含两个文件, Maxwell和Simplorer联合仿真文件,以及Maxwell Simplorer simulink 三者联合仿真文件。
基于springboot的网上图书商城--论文.zip
门板边挡板分离喂料机sw19全套技术资料100%好用.zip
信号与系统matlab仿真实验报告2024(学生提交).docx
洗砂机stp全套技术资料100%好用.zip
用句子记忆单词带背版本,适合时间比较充足想打好基础的同学
电子PCB板龙门铣自动化生产线sw17可编辑全套技术资料100%好用.zip
最新紧固件标准型号对照表.docx
【创新无忧】基于matlab遗传算法GA优化极限学习机KELM故障诊断【含Matlab源码 10735期】.zip
【创新无忧】基于matlab极光算法PLO优化极限学习机KELM故障诊断【含Matlab源码 10707期】.zip
java面向对象程序设计实验报告
展示PRD文档的关键要素编写具体示例。同时提供了一份模板,方便撰写PRD文档。
内容概要:本文详细介绍了一个基于广义变分同步优化(GVSAO)的时间序列预测模型项目。该项目涵盖了从项目背景到最终部署的整个流程,包括数据预处理、模型构建、训练、优化、GUI界面设计、实时预测及系统部署等方面。GVSAO作为一种新型优化方法,能更好地处理非线性关系和高维数据的特点,在预测股票价格、电力负荷、天气变化等方面显示出优越性能。文中提供的MATLAB代码和可视化工具使模型实现和评估更为便捷。 适合人群:对时间序列预测感兴趣的科研工作者、学生和工程师,特别是那些想要深入了解同步优化技术及其应用场景的人。 使用场景及目标:①适用于金融、能源、气象和制造业等多个领域的时间序列预测;②提升模型预测精度;③提供一个完整的项目实施模板供学习模仿。使用该模型可以更有效地挖掘时间序列数据背后隐含的趋势和规律,辅助商业决策和社会管理。 其他说明:本文档不仅包含理论概念和技术细节,还有丰富的实例演示,可以帮助读者全面掌握基于GVSAO的时间序列预测技巧。同时,附带完整的程序代码使得研究成果可以直接应用于实际工作中。
DSP芯片程序读取 DSP28德州仪器28系列DSP反汇编,定点器件和浮点器件均支持,能够根据out、hex或bin文件建立可以编译的CCS汇编语言工程,并且编译后可生成二进制完全相同的bin文件,方便进行研究软件设计思路,二次开发,器件迁移,混淆再链接,研究通信协议,解除ID限制,提取算法等,小批量的代码转C。
内容概要:本文介绍了一种基于对比学习的图异常检测算法,涵盖数据预处理、对比样本构建、模型设计(含选择适当的GNN架构及设计对比学习模块)、异常检测流程、结果评估方法和代码实例六个主要环节。文章特别强调在常规数据集(如Cora、PubMed)的应用上力求获得较高的AUC分数,超过80%,并且提供了详细的操作指导和Python源代码示例供开发者学习。 适用人群:主要面向有一定机器学习、深度学习理论基础,尤其关注图结构数据处理的研究人员、数据科学家和技术专家。对于有志于从事网络安全监控、金融风控等领域工作的专业人士尤为有用。 使用场景及目标:①针对具有大量节点关系的数据结构进行高效的异常识别;②利用先进的AI技术和工具箱快速搭建并迭代优化系统性能,达成高效准确的预测;③为后续研究提供参考和启示。 其他说明:文中不仅深入解析了每一阶段的技术细节,而且通过具体的Python实现片段帮助读者更好地理解和实践这一复杂的过程。对于期望深入挖掘对比学习在非传统数据格式下应用可能性的人而言是个宝贵的参考资料。
MIPI-DPU platform TCL
【JavaScrip】一个傻妞机器人插件库_pgj
comsol锂离子电池组充放电循环强制液冷散热仿真。 模型为SolidWorks导入,可以提供原模型。 电池模型:一维电化学(p2d)模型耦合三维热模型
饼干分包sw20可编辑全套技术资料100%好用.zip
自适应大领域搜索算法(ALNS)matlab解决tsp问题,与传统大规模领域搜索算法(LNS)相比收敛性强,运行时间短,很好的学习资料