快速业务通道

用XSLT和XML改进Struts - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-23
ruts/JSP 缺点

虽然Struts/JSP较之其他模式有许多优势,但它也存在着一些缺点和不足:

程序员可以把应用逻辑放入JSP。遇到问题时,开发人员可以很快地加以修改,经验表明这实际上是陷阱。程序结构很容易变得复杂和难于管理。

JSP不能很好地支持XML,也就不能保证生成的结果文档(XML或HTML文档)将会是100%“格式良好”(Well-Formed)。

开发人员需要学习如何使用Struts的标志库。事实上要理解这些Struts的标志库,特别是Bean和HTML标志库的确要花费比较长的时间。

你不能在视图中用JSP来实现处理管道(processing pipeline)。只能做些简单的include和forward,这样很明显就会限制了视图的灵活性。例如,对布局计和风格的分离就会比较困难。

对JSP页面的任何修改都会导致JSP的重新编译,这样是非常耗费时间的。

上述问题的解决方法必须要具备以下要求:

限制视图对模式和一些定义明确的上下文环境信息的可见程度,比如项目资源的可见程度就应该受到控制。

强制使用格式良好的XML和HTML

能够对在现存的语言或API起到杠杆作用

降低对视图不同部分分离的难度,比如布局和风格的分离。

缩短开发周期

我们相信我们接下来讨论的这个基于未加修改的Struts和XSLT的轻型框架可以满足上述的要求。我们把这个新的架构叫做Model 2x

Model 2x架构概观

Model 2x是 Struts和XSLT结合的产物。Model 2x基在视图部分用XSLT和最后会被串行化成XML文件的Bean替代了原来Struts视图部分的JSP文件,但原封不动地保留Struts的Controller和Model部分。

XSLT定义

作为一种W3C的正式标准,XSLT是用来对XML文档进行转化的一种语言。它是XSL(可扩展样式表语言)的一部分。XPath是用作对XML文档各部分进行定位的语言。在XSL样式中,我们可以利用XPath表达式以一种紧凑而高效的形式选取XML文档的一部分进行处理。

XSL/FO也是XSL的规范的一部分,用来描述显示给读者的页面外观。XSL/FO主要的一个应用就是生成PDF文档。

用XSLT和XML改进Struts(3)

时间:2010-12-10

XSLT和Struts的合成

把Struts和XSLT结合在一起的方法一是在JSP页面中执行XSLT转换。我们可以用标志库来实现这一功能,比如你可以使用Jakarta项目中的一个XSL标志库项目来实现。如果使用这种方式,那么在JSP页面中生成的是应该是XML而不是原来的HTML。借助XSLT样式表,XML转化成HTML或其他格式。然而这种方式需要对Struts本身加以修改。

生成HTML最通常的方式是由Struts的HTML标签库来生成,但这类标志库与XML并不兼容,也就不能和XSLT结合起来使用。当然可以对HTML标志库加以修改让其输出XHTML,这并不困难,但这就要修改现有的Struts 1.0 代码。

此外,这一解决方案需要在四个不同的地方开发:Action 类(控制器)、模型Bean、JSP页面、XSLT样式表(视图)。JSP与标签库的作用也只限于把模式Bean转化成一个XML文档。

第二种方法就是我们提出的Model 2x。这种方法会自动执行这一任务,而且把JSP页面从我们的解决方案中删除了。图2向我们很好地展示了Model 2x设计的核心构成。

用XSLT和XML改进Struts - 编程入门网

图2

我们从图2中可以看出来,Model 2x处理流程的最初部分和Struts的类似。请求被发送到Struts的控制器,然后又被分派给各自的业务逻辑处理单元(Action类的子类)。控制器创建ActionForm对象。请求的参数都保存到这个ActionForm对象中。Action类的子类生成结果Bean(Result Bean),然后把这些Bean交给视图来显示。

Model 2x和Struts处理流程不同的地方在于:Model 2x中用一个XSL Servlet配合XSLT样式表实现了原来在Struts中由JSP实现的视图部分。这个XSL Servlet首先根据Bean和上下文环境生成XML文档,然后调用XSLT进行转换。接下来我们会详细地讲述这个过程。由于我们可以把一个请求提交给任何

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号