接连看到几篇文章谈cocoon,因其中牵扯术语太多,看后一头雾水,遂起学习之心。
网上找到很多谈cocoon的,IBM : developerWorks 中国网站 的在线教程写得最棒。下面就是学习笔记,觉得有意思就顺手记下来了。
以下三行是取源码的命令。
cvs -d :pserver:anoncvs@cvs.apache.org:/home/cvspublic login
cvs -d :pserver:anoncvs@cvs.apache.org:/home/cvspublic -z3 checkout -r cocoon_20_branch xml-cocoon2
cvs -d :pserver:anoncvs@cvs.apache.org:/home/cvspublic logout
管道由一些输入数据以及随后对它进行的一些处理步骤构成。每个处理步骤接受前一步的输出作为输入,一直到达管道的末端并产生最终输出。
Cocoon 包含许多常规管道组件,根据在管道中扮演的角色,它们分组成几种完全不同的类型。
管道输入 — 生成器(如FileGenerator,HTMLGenerator,DirectoryGenerator)和阅读器(常用来读静态文件)
处理步骤 — 转换器(如XSLT 转换器)和操作
管道输出 — 序列化器(如XML,HTML,SVG,PDF序列化器 )
条件的处理 — 匹配器和选择器
Cocoon 管道通常至少由生成器和序列化器组成,但可能含有任意数量的处理步骤。将数据作为 SAX 事件通过 Cocoon 管道传递。
对接收请求和为响应提供服务的逻辑周期如下:
1、从用户接受请求。
2、确定用来解释该请求并生成响应的适当管道(使用匹配器)。
3、从可用的预配置的组件构造管道。
4、指示管道为请求服务。
5、将由管道生成的响应返回用户,可能对结果进行高速缓存以便以后使用。
网站地图(sitemap)两个功能:
1、声明组件;
2、定义管道。
XML Server Pages(XSP)编译过程如下图:
XSP语法:
1、xsp:page 元素是每个 XSP 文档的根元素。它必须有一个标识该页面包含的编程语言 — 具体说就是“java”— 的语言属性。
该页面元素可能包含:
任意数目的 xsp:structure 元素
任意数目的 xsp:logic 元素
单个用户元素
这最后一个限制非常重要。“用户元素”表示不在 XSP 名称空间中的任何元素,包括无名称空间的元素。之所以有这个限制是因为用户元素成为由 XSP 页面创建的 XML 文档的根元素,而 XML 文档只能有单个根元素。
2、xsp:structure 和 xsp:include 元素用于向代码生成过程提供这些附加提示。这两个元素是一前一后使用的,xsp:structure 元素将许多 xsp:include 元素组合在一起。每个 xsp:include 定义一个要导入的附加 Java 包或类。
3、xsp:logic 元素用于将 Java 代码块添加到 XSP。
在这些元素作为 xsp:page 元素的直接子元素出现的任何地方(也就是,单个用户元素以外),这个代码块都应包含方法定义和/或成员变量。之所以存在这一点是因为出现在用户元素以外的代码不包含在生成器的 generate() 方法内。常规的 Java 语法规则意味着这个代码必须是成员或类(也就是,静态)变量或方法。
xsp:logic 元素也可以使用在 XSP 页面的其它地方。在这种情况下,它们应该包含将被添加到已编译的生成器中的 generate() 方法的 Java 语句。这使 xsp:logic 元素类似于 JSP 页面中使用的 <% ... %>scriptlet 语法。
4、CDATA 节,它向 XML 解析器发出信号以对于那节内容不采用良好格式规则
<![CDATA[...]]>
5、xsp:expr 元素用于封装一个表达式,该表达式的值将直接添加到输出文档。与此相反,xsp:logic 元素包含生成器的代码。因此,xsp:expr 元素等价于在 JSP 中实现类似角色的 <%= ... %> 表达式语法。例如:
<elements>
<xsp:logic>
for (int i=1; i<11; i++)
{
<element><xsp:expr>i</xsp:expr></element>
}
</xsp:logic>
</elements>
6、通过使用 xsp:element 生成动态元素。如:
<xsp:element prefix="my" uri="http://www.examples.org">
<xsp:param name="name"><xsp:expr>"myElementName"</xsp:expr></xsp:param>
Element content
</xsp:element>
这个示例生成了以下 XML 输出:
<my:myElementName xmlns:my="http://www.examples.org">Element content</my:myElementName>
7、通过使用 xsp:attribute 生成动态属性
<xsp:element>
<xsp:param name="name"><xsp:expr>"myElementName"</xsp:expr></xsp:param>
<xsp:attribute name="myAttribute">myAttributeValue</xsp:attribute>
Element content
</xsp:element>
和(两个例程没关系)
<image>
<xsp:attribute name="href"><xsp:expr>calculateImageURL()</xsp:expr></xsp:attribute>
</image>
8、xsp:comment 和 xsp:pi 元素用于创建注释和处理指令。
<xsp:comment>This is a comment</xsp:comment>
然后这个注释变成:
<!-- This is a comment -->
请注意:尽管任何文本将被添加到注释,但任何嵌套标记都被忽略了。
创建处理指令类似于创建动态元素或属性。xsp:pi 元素应该有一个标识处理指令目标的嵌套参数。照例对 xsp:pi 元素的剩余内容求值。这里是一个简单示例:
<xsp:pi target="myApplication">
<xsp:expr>"param1=value, param2=value, generatorTimestamp=" +
System.currentTimeMillis()</xsp:expr>
</xsp:pi>
输出如下:
<?myApplication param1=value, param2=value, generatorTimestamp=1017407796870?>
逻辑单是可以被添加到 XSP 页面的定制元素库,是通过使用 XSLT 转换实现的。这些转换将附加的代码块和/或 XSP 标记引入到 XSP 文档,这样扩展了产生 Generator 类的能力。
每个逻辑单都与一个特殊的名称空间关联。使用逻辑单仅仅涉及在 XSP 文档中声明相应的名称空间,然后在需要的时候添加来自那个名称空间的元素。如
<xsp:page language="java"
xmlns:xsp="http://apache.org/xsp"
xmlns:util="http://apache.org/xsp/util/2.0">
<clock>
<day><util:time format="EE"/></day>
<month><util:time format="MMMM"/></month>
<year><util:time format="yyyy"/></year>
<time><util:time format="HH:mm:ss 'on' dd/MM/yyyy"/></time>
</clock>
</xsp:page>
请注意该页面声明了实用程序的名称空间 http://apache.org/xsp/util/2.0,并使用一个附加的元素,而没有插入任何附加 Java 代码。当对它求值时,这个页面产生:
<clock>
<day>Fri</day>
<month>March</month>
<year>2002</year>
<time>15:14:27 on 29/03/2002</time>
</clock>
Cocoon 2 提供了许多预先定义的逻辑单,它们提供大量有用功能,而不必编写 Java 代码。根据这些预先定义的的逻辑单提供的功能类型,可以对它们进行松散分类:
1、环境(Environmental)逻辑单 — 提供了对 Cocoon 处理环境的访问(例如,请求和响应) ,有以下四个:
1)请求(request)逻辑单提供了对请求属性的访问,包括对请求参数、请求方法(例如,GET、POST 等等)以及请求标题的访问。当请求参数的某些方面用于改变输出文档的生成时,这个逻辑单就格外有用。
2)响应(response)逻辑单提供对与当前请求关联的 HTTP 响应的限制访问;它只提供对请求标题的访问。XSP 文档不能用与 Java Servlet 或 JSP 页面相同的方法执行包含或转发,因为分离问题是 Cocoon 2 体系结构的核心部分。这个功能描述在网站地图中;XSP 页面生成 XML 内容而不指导处理。
3)会话(session)逻辑单提供了对 HTTP 会话信息的访问,包括创建和删除会话以及添加和除去会话属性的能力。很明显,这个功能在必须为上下文维护用户会话的 Web 应用程序中是最有用的。Cocoon 2 中的会话管理正好等价于它的 JSP 对手。
4)cookie 逻辑单提供了 cookie 维护功能,诸如添加和除去 cookie、允许优先存储到用户的浏览器中。
2、实用程序逻辑单 — 多用途实用程序代码(例如,文件包含、日志记录、发送邮件等等)
有三个逻辑单,每个逻辑单都提供了一些简单的实用程序功能。
1)日期和时间
2)日志(log)逻辑单处理用户请求时,它允许从 XSP 生成器上写入日志消息。如:
<log:debug>This is a debug message from an XSP generator</log:debug>
还有附加的 info、warn、error 和 fatal-error 元素用于写其它各种日志语句。
3)发送邮件(sendmail) 逻辑单包含了一个提供从 XSP 页面对 JavaMail API 访问的有用元素,如:
<sendmail:send-mail from="myemail@email.com" to="user@user.com" smtphost="smtphost@email.com">
<xsp:param name="subject"><xsp:expr>"The subject of this email..."</xsp:expr></xsp:param>
<xsp:param name="body"><xsp:expr>"The body of this email..."</xsp:expr></xsp:param>
</sendmail:send-mail>
3、数据操作 — 提供了对数据验证和与数据库关联的功能的访问
有两个逻辑单属于该类别,其中的一个提供了比另一个明显更多的功能。
表单验证器(form validator)逻辑单从未真正单独使用。它向 Cocoon 表单验证器行为(Cocoon Form Validator Action)提供一个整齐的界面。这个行为能够对从 HTML 表单发送到 Cocoon 应用程序的数据执行基本验证操作,包括检查整数的最小和最大值、检查字符串的大小以及检查提供的某些参数。一个著名功能是能够测试传递的变量是否匹配给定的正则表达式。
验证的结果存储在请求参数中。验证器(validator)逻辑单提供了解释来自 XSP 页面内的这些结果的方法。这样允许为用户动态生成错误消息。
相关推荐
Cocoon,这个名字在IT行业中可能指的是Apache Cocoon项目,它是一个基于XML的Web开发框架,由Apache软件基金会维护。Cocoon的设计理念是提供一种组件化、可配置和可扩展的方式来构建Web应用,强调内容管理和重用。在...
Apache Cocoon是一个强大的开源项目,源自Apache Software Foundation,专注于构建Web应用程序和服务。Cocoon V2.1.4是该项目的一个稳定版本,它基于W3C(World Wide Web Consortium)的开放标准,如XSLT...
Cocoon 2.2.0 是一个开源的、基于组件的Web开发框架,它由Apache软件基金会开发并维护。这个框架的核心理念是实现关注点分离(Separation of Concerns),以便于开发人员能够专注于各自的专业领域,从而提高开发效率...
《COCOON在线磁盘管理器3.1:便捷云端文件操作的创新实践》 COCOON Online Disk Manager 3.1是一款强大的在线文件管理工具,它以直观易用的界面,模拟了我们熟悉的Windows资源管理器,让用户在处理云端文件时,能...
Cocoon最初的型态是一个简单的Java servlet,全部使用标准W3C组件:用文档对象模型(DOM)来解析文档,用XML来捕捉和格式化数据,用XSLT来转换数据和合并/操纵XML文档,并用XSL来管理文档的表示以便通过Web传送。...
**COCOON Db Tools Final Release 完整篇** COCOON Db Tools 是一款强大的在线文件管理系统,专为数据库管理和操作设计。它提供了一种直观且高效的界面,让用户能够轻松地修改数据库的表结构、更新数据,并支持多种...
《COCOON Counter 6 Professional v1905:商业级站点统计系统的深度解析》 COCOON Counter 6 Professional v1905是一款备受赞誉的网站统计系统,专为商业级应用设计,旨在提供全面、准确的网站数据分析。这款统计...
COCOON ASP.NET 探针v1.0是一款针对ASP.NET环境的高效监测工具,主要功能在于测试和分析ASP.NET应用程序的运行状态以及服务器的相关属性。它为开发者和运维人员提供了一种强大的方式来诊断和优化他们的ASP.NET空间...
总结来说,COCOON Online Disk Manager 4 DEMO是一款面向高级用户的服务器管理工具,它将强大功能与严密的安全措施相结合,既满足了日常运维需求,又为技术爱好者提供了深入学习和定制的空间。虽然DEMO版可能有部分...
总的来说,COCOON IP查询器 v1.1不仅是一个实用的工具,还是一个学习网络编程和IP查询技术的实例,有助于开发者和爱好者提升技能。通过深入研究源代码,可以了解到软件开发的各个环节,对提升个人能力大有裨益。
提供静态文件和动态生成的响应 使用任意数量的处理将用户请求透明地映射到物理资源 执行简单和多级 XSLT 转换 将参数动态传递到 XSLT 变换 ... 这大大增加了使用 XML 和 ...Cocoon 让您能以最少的麻烦生成动态网站
jar包,官方版本,自测可用
【COCOON ASP系统探针 v2.5.00】是一款专为ASP环境设计的监控工具,它主要用于监测和分析服务器的运行状态。在最新版本v2.5.00中,开发者针对用户需求增加了测试网络连接速度的功能,这使得该探针的实用性得到了显著...
功能描述:测试服务器基本信息;测试服务器组件支持情况;测试服务器磁盘使用情况;测试服务器运算能力;测试客户端基本情况;测试客户端浏览器组件支持情况;测试客户端运算能力;测试网络连接速度;...
jar包,官方版本,自测可用
Cocoon2教程详解 Cocoon2是一款基于Apache软件基金会的开源项目,它是一个高度可配置和可扩展的Web应用程序框架,主要用于构建内容管理和Web服务。Cocoon2以其独特的"构建器-流"(Builder-Stream)模型,强调内容的...
jar包,官方版本,自测可用
jar包,官方版本,自测可用
《COCOON Counter 6 Professional:全面剖析网站统计之王》 在信息化时代,网站数据分析成为了企业运营和网络营销的重要工具。"COCOON Counter 6 Professional"就是这样一款专为网站统计设计的强大软件,它提供了...