基于StrutsCX框架的网络信息发布

2010-05-28 08:24陈峰
中国教育技术装备 2010年30期
关键词:配置文件开发人员数据表

陈峰

1 引言

MVC是一种目前广泛流行的软件设计模式,它的全称是Model-View-Controller,即把一个应用的输入、处理、输出流程按照Model(模型层)、View(视图层)、Controller(控制层)的方式进行分离。MVC model 2是一种联合JSP与servlets来实现动态内容服务的方法。Struts是一个基于MVC model 2的很好框架。而StrutsCX是MVC model 2x的极好实现。它基于Struts框架,完全摒弃JSP,采用纯XML和XSLT技术,并支持多种语言。通过它,开发人员可以方便地用标准的XML和XSL技术生成HTML、XML、PDF等多种输出格式。笔者提出一种全新的基于StrutsCX框架的信息发布技术路线,并在此基础上实现一个信息发布平台,具有信息添加、删除、修改等功能。

2 关键技术介绍

2.1 Struts工作原理

Struts继承MVC的各项特性,并根据J2EE的特点,做了相应的变化与扩展。Struts用它自定义的标签库和JSP页面处理视图层(View),用Action Form Bean表示和保存数据,用自己提供的ActionServlet实现控制层(Controller)。如图1所示,Struts首先将Request上的参数组装成Action Form bean,然后将Action Form bean传给某个具体的Action类进行处理,将处理后的结果保存在一个bean中,通过自定义标签库将结果bean中的信息显示成HTML输出。其中struts-config.xml为Struts的配置文件,用于建立Controller和Model之间的关系。

2.2 Struts技术的优缺点

Struts联合JSP和servlets的优点。比较Struts和传统的JSP技术,可得出Struts有以下几个优势。

1)Struts不存在从JSP到Service层的直接调用,简化了JSP页面,清晰了程序员和页面制作人员的分工。

2)Struts具有组件化的优点,整个逻辑流在一个分等级的文本文件中,易于实现对大规模系统的开发和维护。

图1 Struts流程图

3)Struts配置文件struts-config.xml提供了操作、表单和屏幕的集中映射,让开发人员更易于理解整个应用程序,特别是在应用程序很大的情况下。

但Struts也有其不足,如复杂性和层都有所增加,美工人员需要学习全新的Tag Lib。而且View层仍采用JSP,开发人员还是可以在其中写逻辑代码。由于JSP对XML的支持不佳,用户想要获得各种格式的文档并非易事。

2.3 基于MVC model 2x的StrutsCX

将Struts中的View层用XML/XSLT技术替换掉,这就是Model 2x模式。它极大程度地发挥了XSLT的优势。作为一种W3C的正式标准,XSLT提供了一种把XML数据转换成纯文本、PDF、HTML/XHTML、WML、VoiceXML等任意XML格式的灵活、强大的工具[1]。XSLT是高度可定制和可扩展的,并且已经获得广泛的支持(已经存在包括Xalan在内的20多种XSLT处理器)。StrutsCX即基于MVC model 2x的一个极好实现。

1)StrutsCX工作原理。StrutsCX把Struts和XSLT的优势结合到一起,很好地实现Model 2x模式。其具体流程如图2所示。比较图1和图2可得,StrutsCX在Struts的基础上修改View层的内容。它的核心是Struts CX Servlet类。StrutsCXServlet功能包括生成XML文档,读取struts-config.xml得到相应的XSL文件,并通过XSLT输出最终结果。

StrutsCX的配置也由XML文件实现。其中strutsconfig.xml是标准的Struts配置文件,功能和Struts中的相同,只是把其中指定View层的参数由原来的JSP文件名改为Struts CX Servlet。Strutscx-config.xml是StrutsCX专有的配置文件,它让StrutsCX获知到哪里去寻找StrutsCX资源属性文件,例如语言、环境、XSL文件等配置。

图2 StrutsCX的工作流程

2)StrutsCX的技术优势。在实际应用中同基于Struts框架的信息发布平台相比较,笔者得出StrutsCX的以下几点优势:①StrutsCX完全不采用JSP,而通过StrutsCX把XML格式的文件经过XSLT转换最后输出,从而使整个Web应用避免使用JSP和标记库,省略大量的声明,开发人员不用再学习Struts提供的不太标准的自定义标签库;②不采用JSP的同时也避免开发人员将逻辑代码写在JSP中,真正明晰地划分业务逻辑层和表现层的界限;③StrutsCX充分发挥XSLT的优势,利用XSLT可以方便地获得各种输出格式,如HTML、PDF和其他各种XML格式,而不再像JSP那样以HTML为中心。StrutsCX采用i18n实现国际化,它允许以不同的语言和编码方式保存、输出内容。

3 基于StrutsCX框架的信息发布平台应用实例

3.1 技术路线

采用StrutsCX结构编程,通过searchnews.jar调用xmlutil和infopublish软件包中的方法从数据库中读取数据表Content中的数据,并通过StrutsCX采用XSLT转换成为HTML格式显示出结果。

3.2 主要实现程序

TestAction.java:用户Action类,处理Request请求,调用相应的EJB方法,将输出结果表示为XML文档形式。

test.xsl:XSL样式文件。

searchnews.jar:session bean,用来读取数据库中Content数据表中的数据。

db.xml:定义系统使用的数据表结构。数据表Content相应的XML配置文件放在jboss目录下。

xmlutil.jar:session bean,用来连接数据库,并将取出的数据封装为XML文档对象。

InfoPublish.jar:Java Bean,定义基本数据类型。

3.3 StrutsCX的配置

在struts-config.xml中设置forward的path参数为“/StrutsCXServlet/”,在strutscx-config.xml中设置输出格式为HTML,则相应的XSL样式文件test.xsl的路径为“/WEB-INF/xsl/html/test.xsl”。

3.4 XML格式和HTML格式的结果输出

StrutsCX提供的调试变量主要有debugxml和encoding。设置encoding变量为gb2312。 设置debugxml变量为true,则输出XML格式的文档(如图3所示)。值得注意的是,此时除了用户信息文件(图中XML DATA部分),还会一起输出由StrutsCX自己生产的XML文档,包括RESSOURCEN PROPERTIES、ERROR PARAMETERS、REQUEST PARAMETERS和SESSION PARAMETERS。由于篇幅限制,这里没有在图中显示。

debugxml的缺省值为false,此时输出用户指定格式的文档,本例中设为HTML格式。最后输出如图4所示。

图3 xml格式的输出

图4 HTML格式的输出

4 结论

本文给出基于StrutsCX框架的网络信息发布的方法。实际应用表明,采用该方法的信息发布平台分层结构清晰,输出格式灵活,并且便于管理和二次开发。完善的信息发布平台功能还包括对信息的查询、修改、增加等,由于篇幅限制,这里未能具体讨论。同StrutsCX类似的另一种框架为Struts+Cocoon,关于2种方法的优缺点比较还有待深入研究。

[1]Woehrlin B. Generate Web Output in Multiple Formats and Languages with StrutsCX[EB/OL].http://www.devx.com/Java/Article/11381

[2]StrutsCX-Struts with XSLT[EB/OL].http://it.cappuccinonet.com

猜你喜欢
配置文件开发人员数据表
提示用户配置文件错误 这样解决
湖北省新冠肺炎疫情数据表
互不干涉混用Chromium Edge
Semtech发布LoRa Basics 以加速物联网应用
基于列控工程数据表建立线路拓扑关系的研究
忘记ESXi主机root密码怎么办
打印机设置
后悔了?教你隐藏开发人员选项
图表
基于VSL的动态数据表应用研究