基于Struts框架构建网上办公系统
 

2010-01-18 作者:作者:朱朝华,蔡昭权,皮佑国 来源:网络

 

关键词:业务系统;框架;Struts;MVC

中图分类号:TP312 文献标识码:A

Building network system Base on Struts framework

ZHU Zhao-hua1, CAI Zhao-quan2, PI You-guo1

(1. college of Automation Science and Engineering of South China University of Technology, GuangZhou 510641, Cnina; 2. HuiZhou College, HuiZhou 516001,China)

Abstract: Mter Strutsl. 1 framework is introduced by brief, this paper introduces how to build the net- work system by Struts framework through the example of manage transaction system of certain city.

Key words: transaction system ; framework ; Struts ; MVC

1 引言

在软件项目开发中,可重用、易扩展的,而且是经过良好测试的软件组件,越来越为人们所青睐。人们可以将充裕的时间用来分析、构建业务逻辑的应用,而不是消耗烦琐的代码工程。将相同类型问题的解决途径进行抽象,抽取成一个应用框架是一种理想的思路。java网站开发者曾经以"JSP - centric"模式为框架来开发网络系统,但是它在解决一些流向控制和一些特定问题上就有些力不从心[1]。将JavaServer Pages和servlets结合起来使用,Servlets控制流,用JSP来写HTML代码,优势互补。用JSP和Servlets结合就构成了现在流行的Model 2,而Struts架构就是一个比较好的Model2/MVC模式[2]。因此采用Struts架构建系统可以大大提高开发周期和开发质量,最大程度的提供复用技术,使开发简单,成本降低[3]。

2 Struts框架简介

办公系统作为一个完整的系统,应具有层次性、结构性、功能性等特征,而框架作为系统的架构,因此它必须能使系统的特征得以体现。

在Struts框架(MVC)设计模式中,程序流是由一个中央控制器进行控制。一个控制器代表着 requests的句柄(handlers)。句柄handlers是一个 Model的tied,并且每个句柄在request和Model中表演着一个适配器的角色。Model表示集成一个程序的业务逻辑(business logic)或者状态。控制通常都是通过控制器(Controller)到达适当的视图上的。程序流向是被一组mappings决定的,这个 mappings通常是从一个DB或者配置文件中获得。这样就保证了视图(View)和模型(Model)之间的松耦合性。MVC设计模式把一个完整的系统分成视图一控制一模型三层进行设计,且每个模块功能明确。这种设计模式充分体现了系统层次性、结构性、功能性等的良好结合,使系统的创建和程序的维护都非常轻松,其结构图如下图1所示。

在Application Server中充分体现了优化控制思想,JSP页面作为视图(View),servlet作为控制器(Controller),业务逻辑作为模型(Model)。JSP仅是将用户的请求传递给servlet,在servlet控制器中判定应将请求发往哪个业务逻辑进行处理,在业务逻辑内处理完用户的请求后,再反馈到servlet,servlet再判断将处理的结果发往相应的页面显示。

Struts框架就是一种基于Web的MVC的实现。它提供了一个高度自动地实现MVC的方法,可以帮助控制web项目中的变化并提高专业化水平。图2显示了Struts的一个概览。

其处理过程由以下5个基本的步骤描述:

1)由显示视图产生一个请求。

2)请求被ActionServlet(控制器)接收,它在 strutsconfig.xml文件中寻找请求的URI,找到对应的Action类后,Action类执行相应的业务逻辑。

3)Action类执行建立在模型组件基础上的业务逻辑,模型组件是和应用程序关联的。

4)一旦Action类处理完业务逻辑,它把控制权返回给ActionServlet,Action类提供一个键值作为返回的一部分,它指明了处理的结果。ActionServlet使用这个键值来决定在什么视图中显示 Action的类处理结果。

5)当ActionServlet把Action类的处理结果传送到指定的视图中,请求的过程也就完成了。MVC模式有效的减弱了功能模块和显示模块的正交,实现了解耦控制思想,提高了应用系统的可维护性、可扩展性、可移植性和组件的可复用性。

3 基于Struts1.1框架构建网上办公系统

某城市管理局网上办公系统是在为有效地提高政府的办事效率和服务水平,节约办公成本,完善监督制约机制,形成公平、公正、公开的、以“服务”和“透明”为显著标志的运作方式的情况下,应该市城管办的要求来开发的。按系统需求,建设的系统必须具备以下主要性能:1)良好的交互性:申报工作大部分是窗口工作人员与申请人的交流,这就要求系统具有良好的交互性。2)较好的可扩展性:随着社会的发展和城市管理工作的深入申请人申请的内容和形式可能变化,要求系统具有良好的可扩展性。3)良好的可维护性:系统投入使用后,有些内容需要按时更新和维护,这就要求系统的可维护性强。采用了J2EE编程环境和Struts框架的系统架构图如图3所示。

系统采用B/S结构,运用Struts中间件技术,系统的三层结构分别是:服务器表示层(采用 Struts技术)、业务逻辑层(采用EJB技术)和数据库层(采用SQL Server关系数据库系统)。

在服务器层采用的是Struts1.1技术架构, Struts1.1能够很好的把ActionForm类在strutsconfig.xml配置文件中动态创建,代码如下所示:

< form - beans >
< form - bean name = "bwcxForm" type ="org. apache, struts, action. DynaActionForm" >
< form - property name = "act" type = "java. lang. String" />//页面表单属性
. . . . . .

系统的申请表、审批表和其他一些表单属性的 ActionForm都在配置文件中建立。

配置文件核心部分action—mappings设置了跳转的页面以及相对应的Action和ActionForm。部分代码如下所示:

< action - mappings >
< action name = "newsSearchForm" type = "cn. edu. scut. news. struts. NewsMngAction" input ="admin. newsMng" scope = "session" path = "/ad- min-newsMng" />
< action name = "newsForm" type = "cn. edu. scut. news. struts. NewsAction" input = "admin. news" scope = "request" path = "/admin-news" />
. . . . . .
< forward name = "add" path = "/admin-addRelat- edNews, do" />//进行相应跳转

当控制器组件接收到一个来自用户的HTTP请求(在此系统中都是*.d。请求)后,就开始查找针对这个请求的动作映射,再检查是否曾创建过相应的动作对象(Action实例)如果没有,则调用Ac tionMapping生成一个动作对象,控制组件会保存这个动作对象供以后使用。接着调用ActionMap ping的方法得到ActionForm对象。然后把Ac tionForm作为参数传给动作对象的execute()方法。而对象的execute()方法都在相应的Action类中定义。在本项目中创建了SzspblsSubmitAction、 SqrLrAction、SzspblsDylndexAction、BwcxAction等等Action类覆盖execute()方法,进行处理各种各样的事务逻辑。所有的Action类都由Java语言编写。

登陆、窗口工作人员的录入、领导审批等页面都采用大量的Struts标记作为脚本语言,来生成相应的动态和静态JSP页面。部分代码如下所示:

< logic : present name = "topics1" scope = "request">

< img src = "images/blue - ball. gif" width= "10" height = "10" >


火龙果软件/UML软件工程组织致力于提高您的软件工程实践能力,我们不断地吸取业界的宝贵经验,向您提供经过数百家企业验证的有效的工程技术实践经验,同时关注最新的理论进展,帮助您“领跑您所在行业的软件世界”。
资源网站: UML软件工程组织