论文部分内容阅读
摘要:介绍了基于Struts框架的电子政务系统设计和实现过程,系统遵循J2EE规范和MVC设计模式,并且采用了可重用的设计思想和一些组件技术。实现跨平台、低成本、开发高效快捷,可裁剪和移植性强等优点,解决了目前电子政务系统推广普及的一些瓶颈问题,适用于电子政务系统建设项目的需求。
关键词:电子政务;框架;Struts
中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)05-00ppp-0c
电子政务是指政府机构运用计算机技术和网络技术,将其管理和服务的职能转移到网络上去,同时实现政府组织结构和工作流程的重组优化,超越时间/空间和部门分隔的限制,建成一个精简,高效,廉洁,公正的政府运作模式调研表明,电子政务系统的目标是要建立政府信息化网络,建成覆盖机关各处室,各部门,基层各个单位的信息集成系统,实现行政机关的办公现代化,开发基于Web方式的办公信息系统。文中详细介绍了在Web环境下的基于Struts框架如何应用于电子政务系统的开发实例
1 Web框架Struts
Struts是一个基于MVC模式的Web应用程序的框架[1]。它是Apache Software Foundation的一个开源项目。至今已被广泛使用。MVC模式分成三个核心部件:模型(Model)、视图(View)、控制器(Controller),它们各自处理自己的任务。其中Action Servlet类是控制器组件,它根据用户请求,调用相应的Action类实例进行处理,然后选择相应的JSP文件返回客户端;ActionForm类是模型中的数据Bean类,用来表示从View组件中输入的数据;Action类是模型中的逻辑Bean类,对它扩展后可以执行某一特定请求的业务逻辑组件Action之间的映射。此外Struts还包含了一个非常重要的配置文件struts-config.xml,它包括关于Web应用程序的Action Mapping信息、JDBC数据源信息、ActionForm Bean信息和全局发等。
用Struts框架可以将业务逻辑,控制和数据显示功能模块区分开来,应用程序功能划分很清晰,开发人员可以分别集中开发业务逻辑模块,程序控制模块和数据显示模块,不必担心使三者之间的耦合。Struts工作原理如图1所示。
图2 体系结构
2.1 用户层和WEB服务层
用户层是系统面向用户的各种应用子程序,包括信息浏览、信息查询、信息录入子程序。用户通过浏览器访问管理信息系统。具有交互功能,进行填写信息、提交请求的操作,请求结果返回在客户端显示。
WEB 服务层的功能是提供系统应用界面。系统的开发基础是基于WEB技术,因为当今WEB技术以它的方便操作、界面可以让用户根据需要自行更改、功能强大等特点广泛的被应用。通常情况下对于访问者和系统管理人员来说,都可以通过浏览器来完成系统操作。
2.2 业务逻辑层
业务逻辑层主要是对用户的请求进行判断处理。当用户发送数据请求后,首先会进入Web应用层,应用层对用户请求数据进行加工处理并发送到业务逻辑层。通过逻辑层的验证后,执行相应的业务操作,将用户请求提交到数据库,再由数据库返回用户需求的结果给Web应用层,再通过应用层直接将数据返回给用户。
本系统的应用核心将采用J2EE分布式应用技术,它是一种跨平台的开放结构,用于开发基于面向对象技术的客户端/服务器应用程序。客户端可以通过在对象上实现的接口访问对象。针对系统可能出现多个操作并发,以及由于突发性的故障所造成的问题,系统会采用多层分布式应用。多层分布式应用采取事务方法来管理所有操作,保证所有事务要么被全部成功地提交,要么全部回滚到事务初始状态。这样可确保系统数据的稳定性和完整性。
2.3 数据库层(应用后台)
为了提高开发Web应用的效率,简化Java数据库应用的开发,我们采用数据库组件的设计,使其能够与Struts框架有机结合,以便利用Struts框架的健壮性和伸缩性达到组件的可重用性,降低数据库应用与数据来源的相关性。
其设计的核心思想是简化JDBC编程,封装建立数据库连接的步骤,通过修改属性文件完成数据存取逻辑,从而达到设计目的。因此在系统中数据库组件采用基于DAO模式[4],在实现中封装注册和载入JDBC驱动程序、建立连接类DBConnectionManager,对数据库连接池进行安全封装和控制管理,对一个或多个由属性文件定义的数据库连接池的访问。
通过运行SQL语句及处理查询结果集类DBOperation,实现数据库的动态连接功能,添加上实际应用中常用的方法实现与数据源的交互。
在数据库交互类AppInter中编写与业务逻辑相关的SQL语句,然后调用DBOperation运行SQL语句及分页控制PageControl处理查询结果集,与数据源进行交互。
编写AppAction类对Struts中的Action类的继承和实现,接受来自页面表单的参数,调用相应的业务逻辑类,并将得到的结果在ActionServlet控制类下传给页面展示。
3 Struts在应用中的改进
3.1 功能和页面的安全控制
由于政务系统要有一个良好的安全性,我们程序设计中采用由一个类负责进行安全检查,而不是在每个JSP页面或Action类中都实现这个功能。通过使用processRales方法可提供页面级别和功能级别的安全检查,需要扩展RequestProcessor类,覆盖其方法processRoles以进行检查,其中使用HashMap存储角色到页面ID和功能ID的映射,可以采用JAAS框架在web. xml中加人安全的声明的方法来实现功能权限上的访问。
如果使用了Tiles,对于页面级的安全控制可写入在tiles的配置文件中,如下:
<definition name =“defl” path="/classicLay-out. jsp" role=" admin">
<put name =“title" value =”Tiles Example 1”/>
<put name =“header" value="/common/header. jsp"/>
<put name=“menu” value="/common/menu.jsp"/>
<put name =“footer" value="/common/footer, jsp"/>
<put name=“body" value="/bodyl .jsp” />
< /definition>
3.2 中文请求的处理问题
中文处理的问题在JSP/Servlet中由来已久,由于ActionServlet自动从HtmlForm中提取请求数据到FormBean,因此如果请求数据中包含中文,则FormBean中读取到的都是乱码。在上面的系统中,我们采用了Servlet2.3中新提供的filter特性来解决这个问题。我们采取的是编写一个编码转换的类实现Filter接口,并且在web.xml文件中做相应的配置,就可以让所有的request数据在被接收之前转换为GB2312编码。
4 结束语
Struts 是一种优秀的J2EE MVC框架方式。灵活应用它所提供的大量标签库,能大大提高Web 应用程序的开发效率。在页面导航方面,通过一个配置文件即可把握整个系统各部分之间的联系,这给后期维护带来很大的便利。尤其是当另一批开发者接手该项目时,这种优势体现得更加充分。就程序员而言,可以充分利用 Struts框架提供的各种使用类和标签库,简化编码工作,把更多的精力花在解决实际业务问题上。利用Struts 框架进行 Web 应用的开发也非常有利于人员分工和项目管理,同时系统的可维护性和可扩充性也得到提高。
参考文献:
[1]开发专家之Sun ONE.JSP应用开发详解[M].电子工业出版社,2005.
[2]孙卫琴.精通Struts:基于MVC的Java Web设计与开发[M].北京:电子工业出版社,2004.
[3]王长利,全厚德.基于数据库的通信设备自动测试系统设计[J].微计算机信息,2005,1(1):69-71.
[4]孙叶枫,宋中山.JSP中基于连接池的数据库访问技术[J].计算机应用研究,2005,(6):80-82.
收稿日期:2007-12-25
作者简介:唐金鹏(1975-),男,湖南长沙人,高级工程师,硕士,研究方向为:工作流管理,软件框架技术;李玲琳(1974-),女,湖南长沙人,讲师,硕士,主要研究方向为:软件工程,工作流。
关键词:电子政务;框架;Struts
中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)05-00ppp-0c
电子政务是指政府机构运用计算机技术和网络技术,将其管理和服务的职能转移到网络上去,同时实现政府组织结构和工作流程的重组优化,超越时间/空间和部门分隔的限制,建成一个精简,高效,廉洁,公正的政府运作模式调研表明,电子政务系统的目标是要建立政府信息化网络,建成覆盖机关各处室,各部门,基层各个单位的信息集成系统,实现行政机关的办公现代化,开发基于Web方式的办公信息系统。文中详细介绍了在Web环境下的基于Struts框架如何应用于电子政务系统的开发实例
1 Web框架Struts
Struts是一个基于MVC模式的Web应用程序的框架[1]。它是Apache Software Foundation的一个开源项目。至今已被广泛使用。MVC模式分成三个核心部件:模型(Model)、视图(View)、控制器(Controller),它们各自处理自己的任务。其中Action Servlet类是控制器组件,它根据用户请求,调用相应的Action类实例进行处理,然后选择相应的JSP文件返回客户端;ActionForm类是模型中的数据Bean类,用来表示从View组件中输入的数据;Action类是模型中的逻辑Bean类,对它扩展后可以执行某一特定请求的业务逻辑组件Action之间的映射。此外Struts还包含了一个非常重要的配置文件struts-config.xml,它包括关于Web应用程序的Action Mapping信息、JDBC数据源信息、ActionForm Bean信息和全局发等。
用Struts框架可以将业务逻辑,控制和数据显示功能模块区分开来,应用程序功能划分很清晰,开发人员可以分别集中开发业务逻辑模块,程序控制模块和数据显示模块,不必担心使三者之间的耦合。Struts工作原理如图1所示。
图2 体系结构
2.1 用户层和WEB服务层
用户层是系统面向用户的各种应用子程序,包括信息浏览、信息查询、信息录入子程序。用户通过浏览器访问管理信息系统。具有交互功能,进行填写信息、提交请求的操作,请求结果返回在客户端显示。
WEB 服务层的功能是提供系统应用界面。系统的开发基础是基于WEB技术,因为当今WEB技术以它的方便操作、界面可以让用户根据需要自行更改、功能强大等特点广泛的被应用。通常情况下对于访问者和系统管理人员来说,都可以通过浏览器来完成系统操作。
2.2 业务逻辑层
业务逻辑层主要是对用户的请求进行判断处理。当用户发送数据请求后,首先会进入Web应用层,应用层对用户请求数据进行加工处理并发送到业务逻辑层。通过逻辑层的验证后,执行相应的业务操作,将用户请求提交到数据库,再由数据库返回用户需求的结果给Web应用层,再通过应用层直接将数据返回给用户。
本系统的应用核心将采用J2EE分布式应用技术,它是一种跨平台的开放结构,用于开发基于面向对象技术的客户端/服务器应用程序。客户端可以通过在对象上实现的接口访问对象。针对系统可能出现多个操作并发,以及由于突发性的故障所造成的问题,系统会采用多层分布式应用。多层分布式应用采取事务方法来管理所有操作,保证所有事务要么被全部成功地提交,要么全部回滚到事务初始状态。这样可确保系统数据的稳定性和完整性。
2.3 数据库层(应用后台)
为了提高开发Web应用的效率,简化Java数据库应用的开发,我们采用数据库组件的设计,使其能够与Struts框架有机结合,以便利用Struts框架的健壮性和伸缩性达到组件的可重用性,降低数据库应用与数据来源的相关性。
其设计的核心思想是简化JDBC编程,封装建立数据库连接的步骤,通过修改属性文件完成数据存取逻辑,从而达到设计目的。因此在系统中数据库组件采用基于DAO模式[4],在实现中封装注册和载入JDBC驱动程序、建立连接类DBConnectionManager,对数据库连接池进行安全封装和控制管理,对一个或多个由属性文件定义的数据库连接池的访问。
通过运行SQL语句及处理查询结果集类DBOperation,实现数据库的动态连接功能,添加上实际应用中常用的方法实现与数据源的交互。
在数据库交互类AppInter中编写与业务逻辑相关的SQL语句,然后调用DBOperation运行SQL语句及分页控制PageControl处理查询结果集,与数据源进行交互。
编写AppAction类对Struts中的Action类的继承和实现,接受来自页面表单的参数,调用相应的业务逻辑类,并将得到的结果在ActionServlet控制类下传给页面展示。
3 Struts在应用中的改进
3.1 功能和页面的安全控制
由于政务系统要有一个良好的安全性,我们程序设计中采用由一个类负责进行安全检查,而不是在每个JSP页面或Action类中都实现这个功能。通过使用processRales方法可提供页面级别和功能级别的安全检查,需要扩展RequestProcessor类,覆盖其方法processRoles以进行检查,其中使用HashMap存储角色到页面ID和功能ID的映射,可以采用JAAS框架在web. xml中加人安全的声明的方法来实现功能权限上的访问。
如果使用了Tiles,对于页面级的安全控制可写入在tiles的配置文件中,如下:
<definition name =“defl” path="/classicLay-out. jsp" role=" admin">
<put name =“title" value =”Tiles Example 1”/>
<put name =“header" value="/common/header. jsp"/>
<put name=“menu” value="/common/menu.jsp"/>
<put name =“footer" value="/common/footer, jsp"/>
<put name=“body" value="/bodyl .jsp” />
< /definition>
3.2 中文请求的处理问题
中文处理的问题在JSP/Servlet中由来已久,由于ActionServlet自动从HtmlForm中提取请求数据到FormBean,因此如果请求数据中包含中文,则FormBean中读取到的都是乱码。在上面的系统中,我们采用了Servlet2.3中新提供的filter特性来解决这个问题。我们采取的是编写一个编码转换的类实现Filter接口,并且在web.xml文件中做相应的配置,就可以让所有的request数据在被接收之前转换为GB2312编码。
4 结束语
Struts 是一种优秀的J2EE MVC框架方式。灵活应用它所提供的大量标签库,能大大提高Web 应用程序的开发效率。在页面导航方面,通过一个配置文件即可把握整个系统各部分之间的联系,这给后期维护带来很大的便利。尤其是当另一批开发者接手该项目时,这种优势体现得更加充分。就程序员而言,可以充分利用 Struts框架提供的各种使用类和标签库,简化编码工作,把更多的精力花在解决实际业务问题上。利用Struts 框架进行 Web 应用的开发也非常有利于人员分工和项目管理,同时系统的可维护性和可扩充性也得到提高。
参考文献:
[1]开发专家之Sun ONE.JSP应用开发详解[M].电子工业出版社,2005.
[2]孙卫琴.精通Struts:基于MVC的Java Web设计与开发[M].北京:电子工业出版社,2004.
[3]王长利,全厚德.基于数据库的通信设备自动测试系统设计[J].微计算机信息,2005,1(1):69-71.
[4]孙叶枫,宋中山.JSP中基于连接池的数据库访问技术[J].计算机应用研究,2005,(6):80-82.
收稿日期:2007-12-25
作者简介:唐金鹏(1975-),男,湖南长沙人,高级工程师,硕士,研究方向为:工作流管理,软件框架技术;李玲琳(1974-),女,湖南长沙人,讲师,硕士,主要研究方向为:软件工程,工作流。