宮昭坤
(天津港信息技術發展有限公司,天津 300000)
天津港綜合物流信息服務平臺運用先進的信息技術和現代物流技術,優化和整合與港口相關的物流協助單位、物流服務提供單位、貿易型企業等用戶的信息資源,集天津港物流業務信息發布、查詢平臺、單證傳輸和貨物跟蹤、全面的物流信息技術于一體,為用戶提供信息互動和信息共享的統一應用平臺,使信息服務由被動向主動轉變,為政府監管部門和廣大用戶提供“一站式”信息服務。并且,該平臺的建成,將大大提高海關的通關效率、增加貿易機會,改善天津港的經營環境,提高天津港的綜合競爭實力。
由于天津港綜合物流信息服務平臺內容涵蓋廣泛、涉及多個管理部門和用戶。因此在建設該系統時,應該使該系統能夠在最大限度上滿足天津港綜合物流信息服務平臺不斷增長和變化的業務需求。該系統必須具備的性能有:
2.1 良好的交互性:在平臺的多個模塊的功能中有相當多的人機交流,所以要求系統的交互性要強。
2.2 較好的擴展性:平臺業務需求會不斷變化和增長,所以要求系統要具有良好的可擴展性。
2.3 具有較好的跨平臺性:用戶可能使用各種不同的操作系統,而且為了適應今后可能的變化,系統應該具有較好的跨平臺性。
2.4 具有較好的可維護性:系統投入使用后,主要是由管理員承擔系統維護的工作,維護人員不定期變動,這就要求系統的可維護性強。
3.1 系統開發框架
隨著軟件系統的規模和復雜性的增加 ,軟件體系結構的選擇成為比數據結構和算法的選擇更為重要的因素 ,三層客戶/服務器體系結構為企業資源規劃的整合提供了良好的框架 ,是建立企業級管理信息系統的最佳選擇。在開發過程中一個優秀的框架可以極大的提高開發效率。近年來,隨著WEB技術的發展,WEB開發領域出現了很多優秀的開發框架,實現MVC設計模式的Struts框架、實現數據持久化的Hibernate框架就是兩個比較成功的框架。天津港綜合物流信息平臺采用實現MVC設計模式的Struts框架、實現數據持久化的Hibernate框架相結合來開發。
3.1.1 用Struts框架實現MVC
Struts框架是一種基于MVC經典設計的開放源碼的應用框架,通過把Servlet、JSP、JavaBean、自定義標簽和信息資源整合到一個統一的框架中,為Web開發提供了具有高可配置性的MVC開發模式。
Struts框架把一個應用的輸入、處理、輸出流程,按照模型層、視圖層、控制層來劃分。視圖層:提供用戶界面,是用戶和應用程序的交互的窗口,既接受用戶輸入,也把模型數據狀態顯示給用戶,但是視圖不負責任何業務邏輯處理,僅僅是將用戶輸入數據傳遞給控制器或將模型數據顯示給用戶。
控制層:提供應用的處理過程控制。控制器連接了模型和視圖,根據用戶請求判斷將請求交給哪個模型來完成,然后調用視圖來顯示模型處理后的用戶請求結果。
模型層:代表應用的業務邏輯,封裝了用戶數據和處理數據的業務邏輯,體現了應用程序的當前狀態,而且可以將用戶數據狀態的變化提供給多個顯示該數據的視圖共用,是應用程序的核心。
通過Struts框架把應用程序進行了分層,視圖和模型通過控制器連接,從而減少了用戶界面和業務邏輯之間的耦合,使程序設計更加清晰、靈活。
Struts框架實現了MVC設計模式,但它是典型的表現層框架,對模型的實現是不足的,所以有必要引入其他框架加強對模型的實現。
3.1.2 對象關系映射工具Hibernate
Hibernate是一種實現對象和關系之間映射的框架。ORM,即Object-Relational Mapping(對象關系映射),它的作用是在關系型數據庫和業務實體對象之間作一個映射,這樣,我們在具體的操作業務對象的時候,就不需要再去和復雜的SQL語句打交道,只要像平時操作對象一樣操作它就可以了。
Hibernate不僅僅管理Java類到數據庫表的映射(包括Java數據類型到SQL數據類型的映射),還提供數據查詢和獲取數據的方法,可以大幅度減少開發時人工使用SQL和JDBC處理數據的時間。
3.2 基于Struts和Hibernate框架構建天津港綜合物流信息服務平臺
通過前面的介紹,Struts和Hibernate都具有自己的優點和不足,如果將兩者結合起來,通過Struts技術來降低M-V-C各層之間的耦合性,而利用Hibernate架構來降低業務模型部分的開發難度。結合之后的好處是采用Struts和Hibernate結合開發出來的信息系統無論在整體的架構上還是在局部的復雜業務模型中都得到了更低的耦合性,它們的靈活性與可維護性也得到了提高,從而消除了單獨使用這些架構的開發系統的不足。
本系統采用Hibernate+Struts構架如圖1所示。
在平臺的實施方案中,視圖層是采用JSP技術結合Struts強大的Taglib來實現;控制層包含業務邏輯類,它由Struts的控制組件Action-Servlet、Action、ActionForm、ActionMapping 來實現。當然,這些ActionMapping、ActionForm里封裝了與Hibernate的交互關系,控制層通過模型層來實現與數據庫資源的交流,這一部分工作由Hibernate來做,最底層是數據庫。

圖1 天津港綜合物流信息服務平臺Hibernate+Struts構架
本系統通過整合集團公司生產系統(調度、貨運)、EDI系統數據,集物流業務信息發布、查詢平臺、單證傳輸和貨物跟蹤、全面的物流信息技術于一體,為政府監管部門和廣大用戶提供“一站式”信息服務。本系統采用Struts和Hibernate框架結合進行WEB應用程序開發,從而有效的保證系統的可交換性、可維護性、可擴展性和可移植性。
本系統主要由關港聯動、物資采供、物流服務、貨況跟蹤等幾個模塊組成。系統的總體架構如下圖所示:

圖2 天津港綜合物流信息服務平臺系統結構
4.1 業務層的實現
業務層的核心部件是控制器,它由Struts的控制組件 Action Servlet、Action Mapping 及Action來實現,業務層還包含業務邏輯類,它由JavaBean來實現。在Struts中,基本的控制器組件是Action Servlet類中的實例servelt,實際使用的servlet在配置文件中由一組映射(由Action-Mapping類進行描述)進行定義。對于業務邏輯的操作則主要由 Action、Action Mapping、Action-Forward這幾個組件協調完成的,其中Action扮演了真正的業務邏輯的實現者,Action Mapping與Action Forward則指定了不同業務邏輯或流程的運行方向。
4.2 模型層的實現
代表應用的業務邏輯,封裝了用戶數據和處理數據的業務邏輯,體現了應用程序的當前狀態,而且可以將用戶數據狀態的變化提供給多個顯示該數據的視圖共用,在這些JavaBean中封裝了與Hibernate的交互關系,業務層通過模型層來實現與數據庫資源的交流,這一部分工作由Hibernate來做,最底層是關系數據庫。
4.3 表示層的實現
表示層提供了用戶界面,是用戶和應用程序的交互的窗口,既接受用戶的輸入,也向用戶展示模型數據狀態,但是視圖不負責任何業務邏輯處理,僅僅是將用戶輸入的數據傳遞給控制器或將模型數據顯示給用戶。主要采用了JSP作為視圖的實現,還提供了豐富的JSP標簽庫支持應用程序的開發,而且引入了ActionForm組件作為用戶表單的封裝來完成數據的傳輸。
本文介紹了Struts和Hibernate框架在天津港綜合物流信息服務平臺中的應用,并結合平臺的具體業務論述了如何通過Struts框架和Hibernate框架的相結合,在系統的整體架構、及業務邏輯處理中降低耦合性,提高系統的可維護性和靈活性。實踐證明,采用Struts和Hibernate結合J2EE框架進行WEB開發,充分發揮了兩者的優點,有效地提高了項目的開發效率,使系統具有良好的交互性、可擴展性和可維護性,基于這兩種框架進行WEB應用開發也必將成為主流技術。
[1]侯婷.基于Struts和Hibernate框架構建Web應用的研究與實現[D].武漢理工大學,2006-04-01.