用XSLT和XML改进Struts

http://tech.ddvip.com   2006年11月25日    社区交流

本文详细介绍用XSLT和XML改进Struts

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

  

  图3 XML/XSL 工作流程

  XSLT处理

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

责编:豆豆技术应用

正在加载评论...