快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-23
一个已经在Struts配置文件中注册的URL,所以在这个过程中不用对Struts做任何的修改。

XML文档的生成

把一个对象转换到一个Stream的过程我们称之为串行化。在Java 1.1中引入了java.io.Serializable接口和相关的API。二进制串行化可以把一个Java对象转化到二进制流,在网络上传输或是保存到文件中。相比之下,XML串行化是把一个Java对象树转化到文本型的XML流中。

许多开放源代码的软件包,譬如Castor都可以用来执行XML串行化。在我们文章中提到的Model 2x案例中我们自行设计了一个简单的XML串行化方案。这个方案中假设Bean的所有属性是Java的基本类型或者java.util.Colleciton的子类。

这个方案会递归地对窗体Bean(Form Bean)、请求Bean(Request Bean)和Session bean进行自省,创建一个DOM树。同时,也串行化了资源和Struts配置数据也就是上下文环境信息。图3说明了这个过程

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

图3 XML/XSL 工作流程

用XSLT和XML改进Struts(4)

时间:2010-12-10

XSLT处理

在这个Model 2x案例中,XSLT转换只限于样式表对XML流的转换。为了提高性能XSLServlet会对这个样式表进行了缓存处理。XML流着由Struts的处理流程生成。你可以通过提供连续转化或者使用更高级的配置来改进这个简单的架构。Cocoon中你就可以看到这两种方式的使用。Cocoon框架使用XML和XSLT构建服务器端的应用程序。Cocoon基于管道(Pipeline)的架构使其能够更容易对内容和逻辑的加以分离、与大量不同的数据源交互也很方便。通过XSLT,Cocoon的输出可以与不同的设备兼容,比如HTML、WAP等等。

图3显示的是XSLT的处理流程。下面一节提供了一个将内容和版面设计分离的一个例子。

转化例子

TestForm是一个简单的窗体bean,它只有两个属性:

public class TestForm extends ActionForm { private String testString; private List testList; }

假设testString的值为My Test String,testList的值为One、two、Three,XML串行化代码会生成一下XML片断。在XML文档中的元素名是可以预见的,这样编写样式表的时候会简单一些。

<page name="TestForm"> <request> <TestForm> <testString>My Test String</testString> <testList> <item>One</item> <item>Two</item> <item>Three</item> </testList> </TestForm> </request> </page>

简单的XSLT模板把已经串行化的XML流转换到XHTML片断。

<xsl:template match="page"> <h2>Please enter some text and submit</h2> <br/> <form name="testForm" method="get" action="result"> <input type="text" name="testString" value="{request/TestForm/testString}"/> <br/> <select name="outSelect"> <xsl:for-each select="request/TestForm/testList/item"> <option><xsl:value-of select="."/></option> </xsl:for-each> </select> <br/> <input type="submit" value="Submit"/> </form> <hr/> </xsl:template>

经过转化和HTML串行化,结果应该是如下

<h2>Please enter some text and submit</h2> <br> <form name="testForm" method="get" action="result"> <input type="text" name="testString" value="My Test String"> <br> <select name="

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号