J2EE和XML开发——用户接口(三)

原创 2003年08月27日 08:41:00

J2EE应用用户接口开发(三)
 作者 KURT A. GABRICK
         DAVID B. WEISS
 出处 J2EE and XML Development第五章
地址 <<http://www.manning.com/gabrick>>
本文是J2EE和XML开发用户接口的第三部分,如果对文中的例子不熟悉请参见本文的第一、二部分

J2EE和XML开发用户接口(一) <<http://www.csdn.net/develop/article/19/19844.shtm>>。


4.3  扩展为二进制格式
在离开使用XSLT提交接口的主题之前,我们需要重点看看XSLT格式化对象的能力。现今高级Web应用的流行需求是能动态的生成二进制的文件。使用XSLT格式化对象(FO)的实现,你可以从动态XML数据转换为二进制格式的数据,例如PDF格式的文件。这一部分我们通过实现生成股票列表的PDF文件的例子来说明这一点。Apache Software Foundation项目FOP目前已经部分实现了格式化对象。你可以从<http://xml.apache.org/fop下载它的文档和实现>。
为了便于讨论,我们假设需要为股票信息表生成PDF文件而不是HTML文件。修改我们的XSLT版本的例子以生成PDF需要两个步骤


·我们必须修改产生HTML的样式表以用来产生一个FOP格式化对象树取代HTML页
·我们必须在XSLT Filter最后加一步用来调用FOP API并且将格式化对象树转换为PDF文档


所谓格式化对象树是一个特定的XSL样式表,它包含一组打印格式化指令,FOP Driver组件使用这些指令从XML文档创建PDF文件。生成PDF的修改流程如下图示

创建格式化树


 
上图表明了格式化树样式的基本结构。树包括两个主要构件:布局和页面序列。布局描述了可以被用于一个或多个页面序列的页面模板。每个页面序列定义了显示在PDF中的实际内容,包括所有格式化信息。在我们的例子中,我们创建一个布局(主模板)和一个页面序列。我们的页面序列将包括单独的显示信息页面。

列表4.11包括了产生 US英语版本PDF格式的WatchList页面的完整XSL样式
list 4.11


为了利用FO样式,我们必须调用Apache FOP API。因为我们不想将我们的过滤器实现与特定的FO实现系在一起,所以我们将FOP使用一个类PDFWriter将它包装起来。这个类需要一个格式化树样式的全路径以及一个XML输入数据源,并且将PDF输出到指定的输出流上。要完成这样的工作,PDFWriter使用了Apache FOP和JAXP API for XSLT。这个适配器的代码在列表4.12中。
list 4.12


最后就是修改XSLT过滤器以便当html是输出格式的时候使用PDFWriter。修改后的的类为XSLTPDFFilter在列表4.13中列出
list 4.13

下图显示的是PDF输出的情况


5 XML Web发布框架


 Web发布框架合并Java和XML技术成为可使用的体系结构。使用Web发布框架,你可以创建基于XML的表示层而不需要书写任何用于整合XML的定制代码。基于XML的Web发布框架还是相当新的技术,它们的可靠性依赖于使用组件的稳定性,包括XML解析器和XSLT处理器。下面是一些比较流行的Web发布框架产品:
 ·Webmacro(http://www.webmacro.org
 ·Enhydra(<http://www.enhydra.org>)
 ·Cocoon(<http://xml.apache.org/cocoon>)
出于与前述XSLT实现的比较目的,我们现在探讨如何将我们的股票例子用Cocoon Web发布框架来开发。

5.1 Cocoon体系结构介绍
 使用Cocoon进行用户接口开发包括XSL样式和XSP页的创建。因为XSP是当前一个限制在Cocoon上的技术,我们将着重考虑Cocoon的XSLT能力。下面是Cocoon处理流程图

XML Server Pages(XSP)是一个用于基于XML的程序生成语言的工作指南。XSP包括能够控制对于给定XML数据集如何被处理的指令。使用Cocoon的最简单的方法是在你的XML数据文档中添加特别的处理指令。这些指令允许Cocoon处理和格式化你的数据并将它发送到请求的客户端。所支持的输出格式包括WML、PDF、XML和XHTML。

Cocoon生产者
生产者是负责生成XML数据的软件构件。它们与Servlet功能相似用来接收和处理HttpServletRequest。这是Cocoon的一个可扩展的地方,你可以实现自己的生产者来获得指定的处理能力。Cocoon使用FileProducer以便从文件系统中读取请求的文件。

Cocoon处理器
数据一旦被产生,它们将可以用于处理。处理器是负责进行操作(如XSLT转换生产者生产的XML数据)的构件。Cocoon包含下列的处理器:
 ·XSLT处理器
 ·LDAP处理器
 ·XSP处理器
书写你自己的处理器与编写JSP定制标记类似。标记被创建,处理一些逻辑并被页面使用。

Cocoon格式化帮手
格式化帮手帮助那些可能被应用于应答请求的构件。它用于包装输出内容并加入附加格式化信息。

5.2 使用Cocoon提交股票信息
 让我们实践一下Cocoon,我们将使用标准的Cocoon XSLT处理器作为XSLT转换器对我们的XML数据进行转换。我们已经开发了XSL样式,所以只需要修改返回应用逻辑层的XML文档,在我们的XSL样式中加入Cocoon处理指令,如下所式
<?cocoon-process type=xslt?>
然后我们添加两个指令描述应用于数据的HTML和WML样式。对于US地区,指令如下
<?xml-stylesheet href=watchlist.html.en_US.xsl type=text/xsl ?>
<?xml-stylesheet href=watchlist.wml.en_US.xsl type=text/xsl media=wap ?>
media=wap属性告诉Cocoon为WML用户选择对应的样式。否则就会使用缺省的样式。Cocoon被设计成可以像Servlet那样访问,但是我们也可以通过调用API使用它。在列表4.14中,我们修改了WatchListServlet,添加了处理XML数据文档的合适指令并且调用了Cocoon引擎以便转换和向客户发送结果。
list 4.14


下图说明了我们的新的表示层,它结合了Cocoon和J2EE表示层组件


至此全文完

更多信息
1. <http://www.theserverside.com/>
2. <http://www.javaworld.com/>

 

如果需要转贴请写明作者和出处

J2EE和XML开发——用户接口(一)

J2EE和XML开发——用户接口(一)    作者 KURT A. GABRICK              DAVID B. WEISS    出处 J2EE and XML Development...
  • starchu1981
  • starchu1981
  • 2003年07月22日 08:00
  • 1560

J2EE和XML开发——用户接口(二)

J2EE应用用户接口开发(二) 作者 KURT A. GABRICK         DAVID B. WEISS 出处 J2EE and XML Development第五章地址 http://ww...
  • starchu1981
  • starchu1981
  • 2003年07月24日 14:02
  • 1089

j2ee项目开发web.xml文件加载及配置详解

最近又有点闹不明白web.xml文件配置加载顺序了,今天没事又对web.xml文件知识整理了下。就web.xml文件配置及加载顺序讲解:Repeatable="true" 表示可以有多个这样的元素,O...
  • xzy0725
  • xzy0725
  • 2014年02月04日 16:57
  • 1661

用Jetty快速开发J2EE应用

对于用Maven管理的项目,可以使用Maven的Jetty插件启动应用进行快速测试。项目的pom.xml配置如下: 4.0.0 com.cdai struts2-conf 0.0....
  • dc_726
  • dc_726
  • 2012年10月05日 22:15
  • 3505

J2EE——XML

XML(Extensible Markup   Language)可扩展标记语言,这个基础知识在早些已经学习过,看我的这篇博客:XML基础介绍 。而这篇博客为什么把它放在J2EE下边呢,因为他也是J...
  • liujiahan629629
  • liujiahan629629
  • 2014年02月12日 22:53
  • 3254

J2EE三大框架各自的作用是什么?

JAVA三大框架Struts、hibernate和spring的各自作用是什么?struts 主要负责表示层的显示,spring 利用它的IOC和AOP来处理控制业务(负责对数据库的操作),hiber...
  • yangkeshihaer
  • yangkeshihaer
  • 2014年10月16日 16:48
  • 1044

关于J2EE开发三层架构

现在开发web大多都是基于MVC的三层架构,三层架构优势什么呢?        三层架构(3-tier application) 通常意义上的三层架构就是将整个业务应用划分为:表现层(UI)、业...
  • u011569303
  • u011569303
  • 2014年03月28日 16:12
  • 3087

Android studio开发J2EE 和 Linux服务器运行jar文件

前言:上层应用开发变化万千,但是静下心来思考,发现大部分的思想都是相通的只是表现形式不同而已! 关于 jar 和 aar? jar(Java Archive File):java归档文件,是一种压...
  • txksnail
  • txksnail
  • 2017年11月20日 23:03
  • 96

J2EE中applicationContext.xml路径

对于很多时候找不到applicationContext.xml的问题,我是这样解决的,一般情况下,我们可以这样设置 1.设置其绝对路径,然后在applicationContext.xml配置文件中运...
  • qq_24893585
  • qq_24893585
  • 2016年04月12日 22:44
  • 250

操作系统特征、功能和用户接口

1、操作系统特征 ( Characteristics of  OperatingSystems ) 并行性          并行性和并发性是既相似又有区别的两个概念。并行性是指两个...
  • Cannel_2020
  • Cannel_2020
  • 2012年07月01日 16:46
  • 3275
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:J2EE和XML开发——用户接口(三)
举报原因:
原因补充:

(最多只允许输入30个字)