?

基于SSH的渠道管理系統的設計與實現

2011-05-11 11:59沙先軍王愛平魏博誠
網絡安全與數據管理 2011年4期
關鍵詞:調用頁面組件

沙先軍 ,王愛平 ,魏博誠

(1.安徽大學 計算機學院,安徽 合肥230039;2.安徽大學 計算與信號處理教育部重點實驗室,安徽 合肥230039)

渠道是電信行業直接面向客戶進行營銷、銷售和服務的載體,隨著電信行業競爭格局的形成和運營形式的多樣化,已經有越來越多的渠道加入了電信行業。渠道的作用功不可沒,不僅發展了電信行業而且還為電信運營商降低了運營成本,但目前渠道管理仍然面臨著不少問題。首先由于歷史原因,渠道信息系統版本較多,維護和管理比較困難;其次系統流程不暢;而且由于系統功能不健全,數據不全面,不能為業務部門提供全面和準確的支撐報表統計功能。本文基于這樣的業務需求驅動,采用能夠快速開發出跨平臺、可重用、可擴展、分布式系統的SSH架構,設計實現了一個能夠較好地適應業務需求變化的渠道管理信息系統。

1 SSH技術集成框架

使用可重用的、成熟穩定的框架可以構建健壯的、可重用的、可擴充的、易維護的Web應用程序。目前,Java開源世界里有不少優秀的框架,本文選用目前業界主流的Java開發體系Struts+Spring+Hibernate實現整個系統。從圖1可以看出SSH集成架構主要由頁面表現層、業務邏輯層、數據持久層構成,并且各層之間通過域對象[1](Domain Objects)做為載體進行通信。

1.1 頁面表現層

頁面層由Struts實現,Struts是基于MVC模型的框架。MVC模型將一個Web應用分割成為模型(Model)、視圖(View)和控制器(Controller)三個部件,這三個部件既相互獨立又能協同工作,通用的控制組件ActionServlet接收來自客戶端的HTTP請求,根據Struts-config.xml配置文件,把請求轉發給相應的Action對象,然后Action類實現業務邏輯和動作處理,通過流程跳轉將處理結果返回給客戶端[2]。

1.2 業務邏輯層

由Spring實現業務組件的組裝關聯與管理,Spring是個流行的輕量級容器,是一個開源的并且普遍兼容的非強制性的框架。它通過IoC[3](Inversion of Control,又稱DI,Dependency Injection)、AOP(Aspect-Oriented Programming)的應用、使用面向接口的編程最大限度地降低業務組件之間的耦合度,增強系統兼容性和可擴展性。

1.3 數據持久層

借助開源框架Hibernate對JDBC進行輕量級的對象封裝,將數據庫表與對象進行關聯,實現數據庫訪問性能優化和與數據庫交互的常用操作CRUD。Hibernate封裝了數據庫訪問、事務管理、數據緩存等工作,可以大大提供開發效率。

將這三種技術有機結合起來構建的SSH技術框架,不但可以有效提高系統開發效率,而且在系統安全性、穩定性和健壯性上都有良好的改進。域對象在各個層之間移動,為表示層提供所需要的數據源,為持久層提供對象,使得各個層以一種松散耦合的方式彼此作用而無需考慮低層的技術細節,進而構建出一個完整的Web開發框架。

2 系統簡介及分層實現

2.1 系統簡介

渠道是電信運營商與客戶進行交互的具體途徑,是向客戶銷售產品并提供差異化服務的載體。渠道管理主要承載渠道運營過程中的管理支撐功能,包括面向渠道的規劃建設和所涉及人員、費用等方面的基礎管理功能,以及績效考核、服務管理等輔助管理功能。最終通過系統達到為渠道業務提供服務、加強渠道管控水平、提高各類渠道商的素質及實力、培育營銷渠道系統的核心競爭力,并引導各渠道商積極配合電信運營商推行相關市場政策。

圖2為某省渠道管理系統的功能結構圖,主要包括渠道規劃建設管理、業務管理、費用管理、運營考核管理、積分管理、酬金管理、系統管理、資源管理、支撐服務管理、統計報表等十大功能模塊。該系統服務器操作系統采用 Unix(solaris),關系型數據庫采用 Oracle,應用服務器根據資金投入選擇了Oracle的Weblogic??蛻魴C的操作系統選用Windows2000、WindowsXP等版本,安裝IE6.0以上的瀏覽器。

2.2 SSH架構分層實現

2.2.1 數據持久層的搭建

持久層Persistence主要完成數據的訪問,它操作底層的數據庫表,使用DAO組件封裝具體的操作細節,為業務層提供接口,使業務邏輯與數據持久化分離。在Hibernate中,通過配置相應的 XML文件(*.hbm.xml)來完成對象與表、對象屬性與表字段的“O/R映射”關系。Hibernate運行時,會自動讀取XML映射文件,然后按照該文件指定的規則動態構建Java類,以便管理數據在數據庫與Java程序之間的轉換。

持久層的訪問通過DAO組件完成,下面以渠道組織機構信息表(Dchngroupmsg)為例介紹DAO組件建立的過程。

首先使用自動化工具生成JAVA的VO(Value Obects)對象 DchngroupmsgVo和 *.hbm.xml映射文件。DchngroupmsgVo類的屬性與映射文件Dchngroupmsg.hbm.xml中的字段是一一對應的,它完成了對象與表、對象屬性與表字段的“O/R映射”。同時所有映射文件需要在Spring框架的 application-Context.xml中配置,這樣在 Hibernate啟動時才能根據該映射文件真正完成對象/關系的映射。

其次是DAO組件的實現與配置。DAO組件繼承了HibernateDaoSupport類,是 Spring中整合了 Hibernate的支持類,正是由于Spring對Hibernate的良好整合,調用Hibernate進行數據操作時只需要簡單地繼承Spring的HibemateDaoSupport類,然后在需要調用的方法中通過getHibemateTemplate()提供的方法就可以方便地操縱Hibernate。

DAO組件實現后,將它們配置在Spring容器中,讓Spring容器為其注入SessionFactory的引用,并將DAO組件注入到業務邏輯組件中。通過這種依賴注入,可以提供應用各組件之間的良好解耦。

2.2.2 業務邏輯層的構建

在SSH架構中Spring是最核心的框架,Spring主要應用于業務層來管理其他組件,充當了管理容器的角色。負責處理應用程序業務邏輯、業務校驗和事務管理[4];同時管理業務層的對象依賴;在表示層和持久層之間增加了一個靈活的機制,使得它們沒有直接聯系,借助 Spring的 IoC、AOP應用、面向接口編程,能降低業務組件之間的耦合度,增強系統擴展性。

構建Spring業務層主要完成以下兩方面的任務:

(1)對Spring容器進行初始化與配置:Spring提供一個ContextLoaderListener類用作Spring容器的初始化。Spring容器初始化之后,需要創建 ApplicationContext實例,Spring有兩個核心接口 BeanFactory和ApplicationContext,其中 ApplicationContext是 BeanFactory的子接口,增強了BeanFactory的功能,提供系統架構服務。

(2)業務邏輯實現:使用面向接口的編程,調用持久層定義好的接口為表示層提供業務接口,而無需關心接口的具體實現細節,先定義業務層的接口SGroupMsgSvcI:

以上的業務邏輯很簡單,只是通過簡單的調用DchngroupmsgDAO的接口方法來完成。DchngroupmsgDAO引用是在前面持久層中配置的,這個配置指示Spring去動態注入DchngroupmsgDAO到SGroupMsgSvcImpl中,實現渠道組織信息的獲取。2.2.3頁面表示層的建立Struts實際上是Servlet技術的一個擴展,它用一個ActionServlet來接收瀏覽器的請求,用于系統的集中控制,然后在相應的Action類中調用業務邏輯,最后進行流程跳轉。

表示層的建立主要是使用標簽編寫JSP頁面,定義Struts的Action類及相應的配置文件。首先要定義ActionForm,用于收集JSP頁面傳來的數據,供Action中調用業務邏輯使用。為了使用Struts的Validator框架來做客戶端的表單驗證,ActionForm繼承了org.apache.struts.action.ActionForm的子類ValidatorForm。ActionForm中定義的成員名稱要與JSP頁面表單中的域名稱一致,這樣在提交數據的時候,Struts會自動把表單中的數據封裝到繼承的ActionForm中,避免了以往用request.getParameter獲取參數的繁瑣。

然后編寫Action類,所有的Action類都繼承了自定義的BaseAction類,BaseAction類是 org.apache.struts.actions.DispatchAction的子類,同時在BaseAction類中實現了一些公共方法,例如令牌驗證判斷是否重復提交、生成下拉列表、創建上下文ApplicationContext實例等。Action類從ActionForm中提取數據,調用業務邏輯,然后根據返回結果轉向相應的頁面。

所有的Struts Action類都繼承自BaseAction,基類BaseAction完成Spring上下文ApplicactionContext.xml的加載,提供一個公共的服務定位器方法 getBean(),這里SGroupMsgAction是BaseAction的子類,繼承了父類的getBean方法,所以只要通過傳入參數“SGroupMsgSvc”即可查找 Spring的 Bean資源,“SGroupMsgSvc”正是前面業務層在配置文件中指定的bean。這樣根據給定bean的id就能返回配置文件中指定的類。

Struts的控制器ActionServlet接收用戶查詢渠道信息的 URL 請求 “/sGroupMsg.do?operate=queryGroupMsg”,根據該請求的URL查找struts-config.xml配置文件來決定該請求是否處理SGroupMsgAction,SGroupMsgAction的queryGroupMsg方法接收頁面數據,通過服務定位器查找名為“SGroupMsgSvc”的Bean資源,返回業務類的接口SGroupMsgSvcI,并以域模型DchngroupmsgVo對象為參數調用業務接口的getDchngroupmsgVo方法來處理業務邏輯,若查詢成功則返回一個自定義邏輯名稱“SUCCESS”的ActionForward對象,最后ActionServlet把流程轉向ActionForward中定義的JSP頁面(success.jsp),從而完成一次請求/響應過程。

至此,基于Struts、Spring+Hibernate框架開發的渠道組織機構查詢功能開發完成。

本文所設計的SSH集成的Web開發框架基于良好的應用程序分層和成熟的開源項目,具有結構清晰、松散耦合、可擴展和可維護性好的特點,已在電信運營商的各個省份(如北京、湖南、安徽、山西、陜西、四川,黑龍江、新疆等)的渠道管理系統中得到了非常成功的應用。目前系統采用的SSH集成架構已成為最為理想和成熟的J2EE Web應用框架,而且這種開發模式將會被越來越多的程序員所接受,在實際開發中得到廣泛應用。

[1]郝彬,陳朔鷹.利用框架技術構建 Web應用.計算機工程與設計[J].2007,28(1):8-13.

[2]諶湘倩,狄文輝,孫冬.基于輕量級 J2EE框架的網絡教學系統[J].計算機工程,2008,34(6):266-268.

[3]林信良.Spring 2.0技術手冊[M].北京:電子工業出版社,2007.

[4]李剛.整合 Struts+Hibernate+Spring應用開發詳解[M].北京:清華大學出版社,2007.

猜你喜歡
調用頁面組件
刷新生活的頁面
無人機智能巡檢在光伏電站組件診斷中的應用
新型碎邊剪刀盤組件
U盾外殼組件注塑模具設計
核電項目物項調用管理的應用研究
LabWindows/CVI下基于ActiveX技術的Excel調用
基于系統調用的惡意軟件檢測技術研究
風起新一代光伏組件膜層:SSG納米自清潔膜層
利用RFC技術實現SAP系統接口通信
Web安全問答(3)
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合