2006年8月
August 2006
—44—
计  算  机  工  程Computer Engineering 第  第16期
Vol 31卷.31    № 16
·软件技术与数据库· 文章编号:1000—3428(2006)16—0044—02
文献标识码:A
中图分类号:TP 311
Struts 分析及其应用研究
吴寅斐,何钦铭,吴大瑞
(浙江大学计算机学院,杭州 310027)
摘  要:介绍了Java Web 编程模式以及XML 和XSLT 的优点,分析了Struts 的架构及其优缺点。介绍了如何使用Servlet 来处理XML 的XSLT 转换,阐述了如何将Struts +XML +XSLT 结合起来取代JSP ,以及这种模式的优点。 关键词:Struts ;Web ;XML ;XSLT ;HttpServlet ;JSP ;MVC
Struts Analysis and Its Application Research
WU Yinfei, HE Qinming, WU Darui
(College of Computer Science, Zhejiang University, Hangzhou 310027)
【Abstract 】This paper discusses the advantages of Java Web development, XML and XSLT; analyses the framework of Struts, and its advantages and disadvantages; and then presents how to use HttpServlet, which can convert XML into HTML by XSLT. Finally, this paper presents how to use the framework of Struts + XML + XSLT to replace JSP, and analyses the advantages of the framework. 【Key words 】Struts; Web; XML; XSLT; HttpServlet; JSP; MVC
1概述
1.1 Java Web 编程模式
现代编程的模式追求的是模块内高聚合,模块间低耦合。而MVC 设计模式是这种目标的一种实现方式。MVC 是Model ,View ,Controller 的缩写,即Model2,在MVC 的设计模式中,要求在Application 开发中把商业逻辑、界面显示、数据分离。在传统的Web Application 开发方式当中,如:ASP , PHP ,JSP 开发中,从数据库中取到我们需要的数据,并根据数据之间的关联和实际的需要按照某种方式把它们显示在页面中以及从页面提交的表单中提取数据,根据商业逻辑从数据库查询相关数据,或者把数据写入数据库。在ASP ( PHP ,JSP) 实现一切,包括:界面显示,商业逻辑,数据存取,带来的后果就是所写的ASP(PHP ,JSP) 没有层次,并且HTML 和Script 相互嵌套,导致可维护性差,很多时候先写好ASP 、PHP 、JSP ,然后美工进行美化,很有可能发现经过美工处理以后代码已经面目全非了。在MVC 模式中问题的解决办法是:View 负责显示,View 一般从Controller 得到已经处理过的数据,然后显示在页面当中,应该说这样在HTML 中嵌套很少的Script 。基本上美工的修改不大会废掉劳动成果。在使用Java 开发Web Application 时,有几种符合MVC 设计模式的开发方式可以选择[1]:
(1)JSP+Servlet+JavaBean (EJB);
(2)JSP+JavaBean (Controller) +JavaBeans (EJB) (Model); (3)TDK(Turbine ,Velocity); (4)Xsp (Cocoon);
(5)JSP+Struts+JavaBean (EJB)。
Struts 是一个优秀的Java Web 开发框架。
Struts 是Apache 项目之一,现在Struts 已经在Java 开发团体中得到了广泛的支持。
1.2 XSLT 与XML
XML 和XSL 语言都是由W3C 定义,它们比起传统的HTML 等有着明显的优点[2]。XML 优点之一是使用户界面和
结构化数据彼此分离,允许不同来源、异构的数据无缝集成以及对同一数据进行多种处理,例如,对同一数据内容可以表现为多种视图。这既可以满足不同用户的需求,又能在一定程度上保证数据的安全性。另外,XML 在数据描述方面十分灵活,扩展性强,而且具有良好的结构和约束机制;数据经过XML 的处理之后表达方式简单、易读,同时也易于由其他应用进行进一步的加工和处理。而XSLT 主要的功能就是转换,它将一个没有形式表现的XML 内容文档作为源树,将其转换为一个有样式信息的结果树。在XSLT 文档中定义了与XML 文档中各个逻辑成分相匹配的模板,以及匹配转换方式。
值得一提的是,尽管制定XSLT 规范的初衷只是利用它来进行XML 文档与可格式化对象之间的转换,但它的巨大潜力却表现在它可以很好地描述XML 文档向任何一个其它格式的文档作转换的方法,例如转换为另一个逻辑结构的XML 文档、HTML 文档、XHTML 文档、VRML 文档、SVG 文档等。XML 与
XSLT 的结合可以将数据表示和数据的格式分开处理,这样就可以分别将两部分工作分开,各自交给擅长的团队,同时数据的改变不会影响到数据格式的表示,反之也是一样。
2 Struts 框架分析
Struts 是Apache 组织的一个项目,像其他的Apache 组织的项目一样,它也是开放源码项目。Struts 是一个比较好的MVC 框架,提供了对开发MVC 系统的底层支持,它采用的主要技术有:Servlet ,JSP 和custom tag library 。
Struts 的MVC 架构如图1所示。
作者简介:吴寅斐(1982—),男,硕士生,主研方向:机器学习,Web 知识发现,软件工程;何钦铭,教授、博导;吴大瑞,硕士生 收稿日期:2005-10-21    E-mail :wuyinfeizju@yahoo
图1 Struts 的MVC架构
(1)Struts MVC架构分析[3]
1)Controller:Struts中的Controller最主要就是一个Action Servlet,其作用是从客户端接受请求,经解释后分发action,控制器也会自动地把HTTP请求中的参数加入到Form Bean中。Action负责实现核心的业务逻辑,然后把响应结果送回到客户端。在Struts 中可以通过定义一个XML文件来描述请求URI、具体业务逻辑处理、代表客户提供的数据的Form组件三者之间的映射关系。
2)Model:Java beans就是模型的代表。这些bean分成3类:窗体Bean(Form Bean)对象用来包装HTML表单数据,也包括通过URL请求传递过来的数据,Form Bean由Struts的ActionForm类扩展而来;请求Bean(Request Bean)拥有用来生成HTML页面的所需的信息;会话Bean(Session Bean)拥有同一个用户在不同HTTP 请求间共享的对话信息。Struts建议在实现时把“做什么”(Action)和“如何做”(业务逻辑)分离。这样可以实现业务逻辑的重用。
3)View:Struts应用中的View部分是通过JSP技术实现的。Struts 提供了自定义的标记库,通过自定义标记可以非常好地和系统的Model部分交互,通过使用自定义标记创建的JSP表单,可以实现和Model部分中的ActionForm的映射,完成对用户数据的封装,同时这些自定义标记还提供了像模板定制等多种显示功能。
(2)Struts架构的缺点[4]
1)程序员可以把应用逻辑放入JSP,这样会导致程序结构很容易变得复杂和难于管理。
2)JSP语言不能很好支持XML,不是100%格式良好的语言。
php文件管理系统mvc 源码3)对JSP的任何修改都将导致重新编译,因而任何界面的修改都将导致开发过程的延迟。
4)利用JSP会明显地限制视图的灵活性,对布局设计和风格的分离会很困难。
3 利用HttpServlet来处理XML的XSLT转换
Java Servlet是Java Servlet API--Java平台的一部分,编写成独立的跨平台的服务器端程序。拥有“一次编写,随处运行”的强大力量,同时具备网络传递安全性以及对服务器端的应用提供了良好伸缩性。图2显示了如何构造一个普通的HttpServlet子类来进行XML文件的XSLT转换[5]。
图2 HttpServlet对XML进行XSLT转换架构
(1)XML文件:XML文件可以是静态XML,但在程序中大部分使用的还是动态生成的XML。XML串行化是把一个Java对象树转化到文本型的XML流中,许多开放源代码的软件包,如Castor都可以用来执行XML串行化。
(2)XSLT文件:XSLT文件是用来将XML文档转换成HTML表单,这些样式表实际上要比XML数据大,在简化的servlet开发中可以将这种逻辑都作为一系列println()语句写在源程序中,具体如何写XSLT文件请参考相关的资料。
(3)XsltServlet实现:XsltServlet继承于HttpServlet,其功能就是在doGet()或者doPost()中用XSLT将XML文档转换成HTML文档,然后将HTML传送到客户端浏览器。
4 Struts框架结合HttpServlet来处理XSLT
利用struts框架结合servlet就是在MVC结构中,controll- er和model部分仍然使用struts框架的功能,而view部分抛弃了JSP,用XSLT+XML取代。这既保留了Struts框架MVC 的优点,又克服了使用JSP导致很多缺点(见Struts架构的缺
从图3可以看出,Struts+XSLT+XML框架处理流程的最初部分和Struts类似,请求首先发送到Struts控制器,然后到各个逻辑处理单元。Controller创建ActionForm对象,Action子类生成Result bean对象,然后将这些Bean交给视图。不同之处在于视图部分不是JSP,而是一个XLST Servlet,这个Servlet根据Bean生成XML文档,然后调用XSLT将XML文档转换成HTML文档,最后传送到客户端浏览器。
5 Struts+XSLT+XML模型的评价
前面阐述了Struts+XSLT+XML框架的工作机制,现在分析在Struts框架中使用XSLT+XML取代JSP的优点:
(1)业务逻辑和表现逻辑的分离。本身就是XSLT+XML诞生的一个理由,要改变浏览器视图的布局结构,只需要修改XSLT文件就可以了,这样可以很好地实现工作分工。业务程序员对业务的处理和美工对视图表现的美化之间的交叉影响就变得很小,甚至可以说,只要XML数据格式不发生变化,二者之间是没有影响的。
(2)标准技术的使用。XPath是一种强大的表达式语言,用来从XML流中抽取出数据。可通过使用<xsl:for-each>、<xsl:if>、<xsl:choose>这类的XSLT元素配合上模板属性值,使用起来比Struts 中的HTML、Logic、Bean这些标签好得多。XSLT使用了W3C(World Wide Web Consortium)标准的
语言,不但提供了和Struts标签库类似的功能,而且还有很大的提高。此外XSLT还有一些标签库没有的强大功能,比如XSLT支持函数和递归。
(3)客户端处理。目前,IE5/6、Mozilla这样的浏览器已经能够在客户端执行XSLT转换。如果要减轻Web服务器的负担,可以在客户端执行XSLT转换。XInclude(XML Inclusions)可从服务器下载资源和其他的数据,并建立缓存。
(4)原有Struts框架良好的MVC结构,以及Struts框架良好的国际化以及错误处理。
参考文献
1 Microrain. 常见的Java框架有什么?[Z].dechina/.
2 McLaughlin B. Java and XML[M]. 北京: 中国电力出版社, 2001.
3 Colin. Struts原理、开发及项目实施[Z].
4 Davis M G. Struts, MVC 的一种开放源码实现用这种Servlet和JSP 框架管理复杂的大型网站[Z]. IBM开发者网站, 2000.
5 Burke E M. Java and XSLT[M]. 北京: 中国电力出版社, 2003.
—45—

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。