ssh框架范文
時間:2023-03-28 21:03:06
導語:如何才能寫好一篇ssh框架,這就需要搜集整理更多的資料和文獻,歡迎閱讀由公務員之家整理的十篇范文,供你借鑒。
篇1
SSH是一種基于J2EE技術的MVC軟件開發框架,它可以大大降低J2EE程序開發的難度,提高開發效率?本文試圖通過對SSH框架的組成與功能進行深入的分析,揭示其較傳統J2EE開發工具的先進之處。
1. SSH框架技術簡述
集成SSH框架的系統從職責上分為四層:表示層、業務邏輯層、數據持久層和域模塊層,以幫助開發人員在短期內搭建結構清晰、可復用性好、維護方便的Web應用程序。其中使用Struts作為系統的整體基礎架構,負責MVC的分離,在Struts框架的模型部分,利用Hibernate框架對持久層提供支持,業務層用Spring支持。相比傳統的J2EE開發工具,它具有一系列獨特的優點?
首先,SSH框架能夠有效的降低開發成本?縮短開發周期?SSH作為一款開源的框架,無需部署在成本極高的大型服務器上,很多時候只需要配合APACHE一類較便宜的服務器使用。
其次,SSH作為一款輕量級的框架可以有效降低系統開銷,同時它還可以與異步JavaScript和XML框架同時使用,不僅能夠對用戶體驗產生極大的改善,且有助于提升系統性能。
最后,由于SSH框架建立于J2EE的基礎之上,所以其同時具備了J2EE的安全性與跨平臺優勢?同時由于其往往將組件相關的配置與關系寫入XML配置文件,使其在面對需求變化時可通過簡單的對配置信息的修改來加以實現而無需對系統進行大的修改。2. 表示層框架Struts簡介
最初Struts于2002年問世的時候,由于其創始人希望其能夠對標簽庫與JSP等開發技術有所助益,所以它被設計成了一個開源項目。它很好的對MVC系統的開發提供了底層支持,有效的縮短了運用MVC模型對WEB應用的開發周期,最終成為了MVC模式事實上的行業標準。
Struts由四個組件協同工作,其中ActionServlet類是中央控制器,在每個項目中唯一存在。而Action作為分控制器對具體流程進行實際上的控制,調用相應的業務邏輯模塊來實現功能并送出結果?ActionMapping作用是幫助控制器將請求映射到操作,ActionForm的作用則是接受和存儲表示層中接受的數據。這四部分共同實現了Struts框架對流程的控制,
由于Struts框架屬于開源項目,這給了我們深入理解其內部實現機制的機會?總體而言,Struts的優勢很明顯?它的優點在于它擁有大量的成功案例可供開發者借鑒?同時提供了豐富的標記庫(Taglib),可大大提高開發的效率?而它將表現與邏輯分離的做法,使得結構更加清晰,有助于開發者將精力集中于業務邏輯的實現?最后,它具有優秀的頁面導航功能,這對后期的維護有著不可估量的好處。3. 持久層框架Hibernate簡介
Hibernate是一款開源的對象——關系映射框架,它對JDBCAPI進行了極其輕量級的對象封裝,從而極大的擴展了開發人員對數據庫的操縱程度,同時它封裝了數據訪問的細節,使得開發者可以將更多的精力集中在業務邏輯上。
Hibernate有6個核心接口,分別是擁有負責將其初始化的SessionFactory接口,負責執行被持久化對象的CRUD操作的Session接口,負責事務相關的操作的可選接口Transaction以及負責執行各種數據庫查詢Query接口與Criteria接口?Hibernate通過這些接口,對持久化對象進行各種存取操作并進行事務控制。
Hibernate主要有四塊內容:持久化類PO,它是數據庫表的一個映射,是Hibernate的操作對象,而操作結果會反映到對應的數據庫表中,映射文件XMLMapping,它存放著PO和數據庫表的映射信息,如表名和類名的對應,PO的屬性與數據庫表中字段的對應,hibernate.cfg.xml,存放著連接數據庫的配置信息已經映射文件的路徑,在Hibernate初始化時Configuration會加載該文件信息到計算機內存,并創建一個SessionFactory對象,把讀入的配置信息拷貝到SessionFactory對象的緩存中,HibernateAPI,主要是前文中所述的六大接口,彼此配合最終實現Hibernate對PO的各種操作并持久化到數據庫中。4. Spring框架簡介
Spring框架提供了一種能夠完全獨立于各種應用服務器并可與現有框架無縫整合的解決方案,其主要通過控制反轉與面向方面編程兩種方式來進行實現,其主要優點在于無論你是否使用了EJB,SPRING都能夠有效的對你的中間層對象進行組織,它為數據存取提供了一個統一的框架,并能夠以一種統一的方式對不同的程序與項目的配置文件進行處理,它是一個全面的解決方案,包括了非常豐富的內容,包括視圖層?模型層?數據層等,它提供了很多原來只有EJB能提供的功能(如聲明式事務管理),卻又無須運行在EJB容器上。
Spring框架由七個有著明確定義的模塊組成,其中SpringCore是它的基礎部分,是控制反轉的承載容器?而在此基礎上衍生出來的SpringAOP則提供了對面向類編程的支持,Springweb與Springorm則分別提供了對MVC框架與ORM框架的支持,SpringDAO則簡化了JDBC編程,使代碼更健壯,SpringContext作為一個強大的集成工具箱,有利于進行企業級程序的開發,而相比之下,SpringWebMVC則聲名不彰,盡管它作為一款MVC框架提供了比Struts更自由的配置度但卻未能得到廣泛的應用,以上七個模塊均可單獨或聯合實現,具有較高的自由度。5. 使用Spring對Struts與Hibernate加以整合
我們從前文中可以清晰的看到,Struts是目前應用于MVC框架中的業界實際標準,其具備高度的可靠性與穩定性,同時將表現與邏輯分離,從而使得結構更加清晰?同時提供了豐富的標記庫(Taglib)與頁面導航,大大提高了開發的效率與易維護性,但是在模型層卻缺少相應的實現。
而Hibernate作為目前業界最成熟的持久層框架之一,封裝了數據訪問的細節,使得開發者可以將更多的精力集中在業務邏輯上,極大的提高了開發效率。
SSH框架的指導思想就是將這兩個框架有機的整合在一起,充分發揮出二者各自的優點, Spring通過Springweb與SpringORM兩個模塊分別對Struts和Hibernate兩個框架進行了整合,為企業級的應用程序提供了一套模塊化的一攬子解決方案,在讓前者發揮出其對程序流程的良好控制作用的同時讓后者負責數據庫的訪問,以達到優勢互補、降低開發難度、提高開發效率的目的。
篇2
關鍵詞:Java;中文亂碼;ssh;數據庫;參數傳遞
中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2011)21-5157-02
Research on Chinese Characters Garbage under SSH Framework
ZHANG Jin-meng, SU Jian, ZHAO Yao
(Shijiazhuang Vocational College of Posts and Telecommunications, Shijiazhuang 050021, China)
Abstract: Chinese characters garbage of Java web programming, is a long time and headache problems. Particularly, for just contact Java programming personnel, this problem is more trouble. This article introduces the solution of Chinese characters garbage, from the database code pages and jsp chinese parameters, ajax chinese characters pass those three points in the java web program under ssh framework.
Key words: Java; Chinese characters garbage; ssh; database; parameters pass
1 Java中文亂碼問題的產生原因
在Java Web的應用中,中文字符亂碼問題是個由來已久和讓人頭疼的問題,尤其是剛剛接觸Java Web編程的人員,往往在解決中文字符亂碼問題上花費了大量的時間和精力。
要了解Java中文亂碼問題的產生原因,先要從Java的字符編碼說起,常用的Java字符編碼集有以下幾種:
ASCII(American Standard Code for Information Interchange,美國信息互換標準代碼),是基于常用的英文字符的一套電腦編碼系統。我們知道英文經常使用的字符、數字符號被計算機處理時都是以二進制碼的形式出現的。這種二進制碼的形式就是所謂的ASCII碼。每個ASCII與一個8位二進制數對應。其最高位是0,相應的十進制數是0-127。另有128個擴展的ASCII碼,最高位都是1,由一些制表符和其它符號組成。ASCII是現今最通用的單字節編碼系統。
GB2312:GB2312碼是中華人民共和國國家漢字信息交換用編碼,全稱《信息交換用漢字編碼字符集-基本集》。主要用于給每個中文字符指定相應的數字,也就是通行編碼。一個中文字符用兩個字節的數字來表示,為了與ASCII碼有所區別,將中文字符每一個字節的最高位置都用1來表示。
GBK:為了對更多的字符進行編碼,國家又了新的編碼系統GBK(GBK的K是“擴展”的漢語拼音的第一個字母)。在新的編碼系統里,除了兼容GB2312外,還對繁體中文、一些不常用的漢字和許多符號進行了編碼。
ISO-8859-1:ISO-8859-1編碼是單字節編碼,向下兼容ASCII,其編碼范圍是0x00-0xFF,0x00-0x7F之間完全和ASCII一致,0x80-0x9F之間是控制字符,0xA0-0xFF之間是文字符號。 ISO-8859-1收錄的字符除ASCII收錄的字符外,還包括西歐語言、希臘語、泰語、阿拉伯語、希伯來語對應的文字符號。歐元符號出現的比較晚,沒有被收錄在ISO-8859-1當中。
Unicode:這是一種通用的字符集,對所有語言的文字進行了統一編碼,對每一個字符都用2個字節來表示,對于英文字符前面加“0”字節的策略實現等長兼容。如“a”的ASCII碼為0x61,Unicode就為0x00,0x61。
UTF-8:Unicode Transformation Format-8bit。是用以解決國際上字符的一種多字節編碼,它對英文使用8位(即一個字節),中文使用24為(三個字節)來編碼。UTF-8包含全世界所有國家需要用到的字符,是國際編碼,通用性強。UTF-8編碼的文字可以在各國支持UTF8字符集的瀏覽器上顯示。如,如果是UTF8編碼,則在外國人的英文IE上也能顯示中文,他們無需下載IE的中文語言支持包。
Java使用Unicode來存儲字符數據,處理字符時通常有3個步驟:
1)按給定的字符編碼形式,從源輸入流中讀取字符數據;
2)以Unicode編碼形式將字符數據存儲在內存中;
3)按指定的字符編碼形式,將字符數據編碼并寫入目的輸入流中。
所以Java處理字符時總是經過了兩次編碼轉換,一次是從指定編碼轉換為Unicode編碼,一次是從Unicode編碼轉換為指定編碼。如果讀入時用錯誤的形式解碼字符,則內存存儲的是錯誤的Unicode字符。而從最初文件中讀出的字符數據,到最終在屏幕終端顯示這些字符,期間經過了應用程序的多次轉換。如果中間某次字符處理,用錯誤的編碼方式解碼了從輸入流讀取的字符數據,或用錯誤的編碼方式將字符寫入輸出流,則下一個字符數據的接收者就會編解碼出錯,從而導致最終顯示亂碼。
2 中文字符亂碼問題的分類和解決方法
SSH框架即strut+hibernate+spring,是目前比較流行的開源框架,提出了一種開發J2EE Web應用的輕量級解決方案,以幫助開發人員在短期內搭建結構清晰、可復用性好、維護方便的Web應用程序。本文分析了在開發工具為Eclipse,數據庫為oracle,開發框架為SSH,應用服務器為tomcat的環境下中文字符亂碼問題的分類和解決方法。
2.1 數據庫寫入和讀出亂碼
一旦數據庫創建后,數據庫的字符集是不能改變的。因此,在設計和安裝之初考慮使用哪一種字符集是十分重要的。數據庫字符集應該是操作系統本地字符集的一個超集。存取數據庫的客戶使用的字符集將決定選擇哪一個超集,即數據庫字符集應該是所有客戶字符集的超集。
在oracle中,我們關心的是三個地方的字符集:oracle服務器內部的字符集;ns_lang變量里保存的字符集,客戶端應用的字符集。在Java編程中,需要統一Java應用中的字符集,oracle服務器內部的字符集,ns_lang變量里保存的字符集。通常,在Java開發中, oracle10g在創建數據庫實例時需要指定SIMPLIFIED CHINESE_CHINA.ZHS16GBK字符集。有時,在安裝oracle過程中自動創建數據庫實例時使用AMERICAN_AMERICA.WE8ISO8859P1字符集或者一些與Java字符集不兼容的字符集,就會出現亂碼問題,這時需要先安裝數據庫,不自動生成數據庫實例,在安裝完數據庫之后,再通過oracle配置和移植工具DataBase Configuration Assistance創建數據庫,在圖1的界面中選擇ZHS16GBK字符集。
2.2 JSP頁面顯示和傳遞中文參數亂碼
要解決這類亂碼問題,涉及到幾個方面的設置:
1)在struts的配置文件struts.properties中設置struts.i18n.encoding=gbk,struts.i18n.encoding用在了請求和返回兩個階段中流的編碼方式,該參數為gbk時,相當于調用HttpServletRequest的setCharacterEncoding()方法。
2)在web.xml中添加下面的程序代碼,指定字符過濾器對字符的編碼方式為gbk。
encodingFilter
org.springframework.web.filter.CharacterEncodingFilter
encoding
gbk
encodingFilter
/*
3)在編輯器中用gbk編碼保存JSP文件,并設置JSP文件開頭的,其中pageEncoding用來告訴tomcat此文件所用的字符編碼。Tomcat以此編碼來讀取JSP文件并編譯。還要設置,當JSP頁面用post方法提交數據時,用此處指定的編碼方式編碼。
4)設置Tomcat的URIEncoding,如果URIEncoding不加以設置,則默認使用ISO-8859-1來解碼URL,設置后便用設置的編碼方式來解碼。這個解碼同時包括Path部分和查詢字符串部分。即在Tomcat配置端口的語句中加入URIEncoding="GBK"。
進行完這些設置之后,基本上就不會出現JSP頁面亂碼問題了。
2.3 Action中redirect傳遞中文參數亂碼
在開發中有時需要用response.sendRedirect做轉向,它其實是向瀏覽器發送一個特別的Header,然后由瀏覽器來做轉向,轉到指定的頁面,所以用sendRedirect時,瀏覽器的地址欄上能夠看到地址的變化。通常sendRedirect需要把參數掛在地址后面以&分隔傳遞,傳遞中文字符時,有時會需要亂碼,這時就需要用到Java的URLEncoder類了,這個類有個encode方法,形式為public static String encode(String s, String encoding),在encoding參數中,可以指定字符編碼的方式,通常我們傳遞中文字符時,需要這樣寫ceshi.jsp?param1=.URLEncoder.encode(“你好”,”gbk”)。這樣就能防止傳遞的中文參數亂碼了。
2.4 Ajax傳遞中文參數亂碼
Ajax即“Asynchronous JavaScript and XML”(異步JavaScript和XML)。Ajax提供與服務器異步通信的能力,從而使用戶從請求/響應的循環中解脫出來。借助于Ajax,可以在用戶單擊按鈕時,使用JavaScript和DHTML立即更新UI,并向服務器發出異步請求,以執行更新或查詢數據庫。當請求返回時,就可以使用JavaScript和CSS來相應地更新UI,而不是刷新整個頁面。最重要的是,用戶甚至不知道瀏覽器正在與服務器通信:Web站點看起來是即時響應的。
Ajax默認中文提交以UTF-8格式,解決Ajax中文參數亂碼問題有兩種方式,一種是提交中文后,在服務端用UTF-8編碼提取參數:request.setCharsetEncoding(“UTF-8”);String str=request.getParameter(“param”);另一種是在Jsp頁面用encodeURI編碼兩次,即encodeURI(encodeURI(”str”)),然后在服務端用String str=request.getParameter(“param”); .URIDecoder.decode(str, “UTF-8”)。
3 結束語
本文介紹了在開發工具為Eclipse,數據庫選用oracle,開發框架選用SSH,應用服務器選擇tomcat的環境下中文字符亂碼問題的分類和解決。根據環境的不同,可將文中編碼為GBK的部分替換為其它編碼來解決中文亂碼問題。
參考文獻:
[1] 李剛.輕量級J2EE企業應用實戰[M].北京:電子工業出版社,2007.
篇3
關鍵詞:Android;SSH;框架;客戶端;服務器端
中圖法分類號:TP311.52
隨著人們要求的提高以及3G網絡的發展,傳統互聯網已不能滿足人們的要求,移動互聯網應運而生。Android系統作為目前最為流行的智能手機平臺,其相關應用越來越多。本系統開發了一個基于Android的校園購物平臺,為在校學生提供一個買賣商品的平臺,滿足學生物品交換的需求。
校園購物系統(Business In School,簡稱BIS),是一個學生校內交易的平臺,用戶可以使用該平臺進行商品檢索,找到自己需要的商品,聯系賣家進行面對面交易,也可以二手交易,或者做為一個換客,以物易物。由于平臺只面向校內,所以不提供交易風險擔保,平臺只是提供給買家和賣家一個相互了解渠道。
1 系統架構設計
校園購物平臺有服務端及客戶端,客戶端主要用到Android技術。
1.1 Android客戶端設計
客戶端使用Android技術[1],借助該技術可以將客戶端系統很好的移植到手機上,使用戶可以隨時隨地登錄到此系統上。客戶端頁面主要由所謂的活動(Activity)組成,每個活動之間由Internet負責頁面的跳轉及頁面之間的數據傳遞。
1.2 系統服務器端架構設計
校園購物平臺的服務端采用MVC分層設計思想,將各個層面互相獨立,便于系統的開發以及后期的維護。本系統采用SSH(Structs+Spring+Hibernate)框架來實現,整個服務器端擴展性強,可維護性高。數據庫通過利用Hibernate的數據庫映射工具完成從表到Java類的映射,通過Hibernate對該對象完成持久化操作;然后通過使用Spring的控制反轉機制(IoC)將對象之間的依賴關系交由Spring進行控制,從而避免硬編碼所造成的過度程序耦合[2]。
表示層,負責邏輯層與表現層的交互。調用業務邏輯層,并將業務數據返回給表現層作組織表現,該部分采用Structs框架的Action處理。控制層負責攔截所有Http請求,然后根據用戶請求決定是否需要調用業務邏輯控制器,如果需要則請求轉發給Action處理,否則直接轉向請求的JSP頁面。業務控制層是整個系統的核心部分,它與實現的業務功能緊密聯系,其中的各個功能模塊各自實現不同的業務功能[3]。
業務邏輯層,負責實現業務邏輯,該層以DAO為基礎,通過對DAO組件的模式包裝,實現業務層組件與具體的數據庫訪問技術分離,使所有的數據庫訪問依賴于DAO組件,這樣就可以把邏輯層與DAO層分開,達到松散耦合的效果[4],完成系統所要求的業務邏輯。
數據持久層,負責與持久化對象交互。該層封裝了數據的增、刪、改、查的操作。
持久化對象,通過實體關系映射工具將關系型數據庫的數據映射成對象,很方便地實現以面向對象方式操作數據庫,該系統采用Hibernate作為框架。Spring框架貫穿整個中間層,將Web層、業務邏輯層、DAO層和持久化對象無縫整合,其數據服務層用來存放數據。
2.2 服務器端實現
2.3 運行效果圖
3 結語
本文設計并實現了基于Android平臺的校園購物系統。系統在實現過程中結合了軟件工程理論和先進的智能手機應用,開發出符合手機終端用戶行為習慣的系統,以方便自己的生活和學習,具有很大的實用價值。
參考文獻:
[1][英]梅爾.Android高級編程[M].王鵬杰,霍建同譯.北京:清華大學出版社,2010.
[2]李剛.整合Struts+ Hibernate+ Spring應用開發詳解[M].北京:清華大學出版社,2007.
[3]余志龍.GoogleAndroidSDK開發范例大全[M].北京:人民郵電出版社,2O10.
[4]孫鑫.Struts2深入詳解[M].北京:電子工業出版社,2008.
[5]李寧.人人都玩開心網:gxtJS+Android+SSH整合開發Web與移動SNS[M].北京:電子工業出版社,2010.
[6]徐玲,蔣欣志,張杰.手機二維碼識別系統的設計與實現[J].計算機應用,2012,32(5):1474-1476.
篇4
關鍵詞:Spring Struts Hibernate 教師科研管理系統
中圖分類號:TP311.52 文獻標識碼:A 文章編號:1672-3791(2016)02(a)-0010-02
針對教學科研工作中存在的以下問題:更新不及時、新舊信息錯雜、獲取信息復雜,相關管理人員管理工作繁重等,筆者進行了教學科研Web系統的開發。以期解決現行管理過程中存在的問題,使對教學科研活動的管理有序有效地進行,并提供多種查詢統計功能和教師業績點計算功能,進一步減輕管理員的工作強度,同時實行多權限設置,增加權限賦予功能,使得查詢統計功能在擁有安全性的同時,加強了靈活性[2]。
該論文將會講述運用Web應用技術,采用目前較流行的Spring+Struts+Hibernate開發框架,實現教學科研管理系統,其中詳細講述管理員功能模塊的設計與實現[3]。
1 系統功能分析
該文主要是對教師科研信息管理系統中管理員模塊的設計,該模塊主要包括資料上傳、公告、授權功能、審批管理、人員管理和業績點計算等功能。主要的使用者是管理員。
1.1 通知功能
在管理員登錄之后,進入管理員界面。在此頁面,可以進入通知頁面,其中包括兩部分,通知和通知管理。
管理員可以新建通知,對新建的通知,管理員可以,或存為草稿日后,或取消。對于存為草稿的通知,管理員可以修改后,或修改后存為草稿,或取消,或直接刪除。通知之后,系統會發送郵件通知所有用戶,通知,主要便于及時查看。
提交完成之后的通知則可通過通知管理功能進行管理,同樣可以對已的新聞進行刪除或修改操作,同時考慮到的通知可能會很多,在界面中增加了分頁的功能。對于修改已的通知,系統將會發郵件通知用戶通知已經改變,并將該通知置頂。
1.2 審批管理功能
審批管理功能主要分為,審批上傳資料和管理上傳資料兩塊,是對用戶上傳的論文、著作、科研項目、專利發明、學術活動及學院相關資料等進行審批和統一管理。鑒于在功能模塊上的類似,在此,以審批論文信息為例對審批功能的實現進行說明。
點擊審批論文信息,進入待審批列表界面,表中將羅列論文的一些基本信息。點擊論文題目,打開該論文的相關信息,進行審批,管理員沒有權力更改用戶提交的論文信息,如果這些信息不符合要求,管理員則可以拒絕,并填寫審批不通過的理由,同時填寫自己郵箱密碼,系統將通過該管理員的郵箱向用戶發出郵件,通知用戶其論文未通過審批,并要求其進行修改,再提交。同樣,若審批通過,管理員也會通過系統發郵件給用戶,通知他論文審批通過。
在管理上傳資料中,主要是對于那些超過了保存期限的資料,進行備份或刪除,然后將其移出服務器。
1.3 人員管理功能
人員管理功能是對系統用戶的基本信息的管理,也包括兩個功能,人員添加和人員修改。人員添加,主要是用于添加新用戶。考慮到本系統是內部服務系統,因此不通過用戶自行注冊,而是通過管理員添加來完成用戶添加。管理員需填寫用戶的基本信息,并將用戶的登錄賬號告知用戶。
考慮到信息的公正性,用戶不具備對其基本信息的改動權限,因此如果基本信息改動,用戶應及時通知管理員,進行修改。管理員在人員管理中可以進行用戶資料的修改,同時也可將離校教師的賬戶刪除。
1.4 授權權限功能
授權權限是對用戶查看統計信息權限的管理。管理員可根據用戶的申請,賦予用戶查看統計信息的權限,并適時關閉其權限。
管理員在授予權限頁面中賦予用戶權限,可一次賦予一個或多個用戶,如果拒絕用戶的權限申請,需填寫拒絕理由。
管理員通過權限管理,可取消用戶的權限。在用戶的權限到期之后,管理員可取消用戶的查看統計權限。
1.5 業績點計算功能
業績點計算主要是將每個用戶的總的業績點統計出來,羅列在一張表中,管理員可以通過備份,將上一年的業績點導出,然后存放在服務器上,同時通過點擊每個用戶的工號,可查看每個用戶具體的業績點情況。
1.6 資料上傳功能
資料上傳功能主要是對課表信息和教材信息的導入和管理。管理員首先將規定列名的Excel表上傳到服務器,然后再通過資料上傳界面中的導入功能,將該表導入到數據庫中,從而實現課表信息和教材信息的導入[1]。
同時,管理員可以通過上傳資料中的管理功能實現對數據庫中的課程信息和教材信息的修改或刪除。
2 系統實現
在此,按照系統架構逐步闡述管理員功能的主要實現框架。該系統主要分為3個層次,表現層、中間層及數據庫層[5]。
2.1 表現層
表現層提供與用戶交互的界面,用Web頁面實現。主要使用JSP技術實現,在個別靜態頁面中,使用HTML靜態技術實現[6]。
2.2 中間層
該系統又將中間層劃分為Web層、Service層、DAO層和common層。
(1)Web層。
該層包含了Formbean和Action兩部分,同時也通過這兩部分分別聯系表現層和業務邏輯層,Formbean對應了JSP頁面中的內容,而Action則調用了業務邏輯層中的內容。
(2)Service層。
在該系統中,Service層完成了業務邏輯層的工作,其中主要是對Hibernate所封裝的對數據庫的操作的調用。例如,
public News getNewsByNewsId(int newsId) {
// TODO Auto-generated method stub
Validate.notNull(newsId, "when get pmrReg, the pmrReg id must not null...");
News news = null;
try {
news = newsDAO.getObject(newsId);
} catch (ObjectNotFoundException e) {
eventLogger.info("the dailyReport[" + newsId + " does not exit...",e);
throw new ServiceException("通過主鍵獲取日報錯誤");
}
return news;
}
(3)DAO層。
該層主要包括DAO層和PO層,其中DAO層的類都繼承了common層中封裝了Hibernate對數據庫的操作的類CommonDAOHibernate.java,而不是直接封裝Hibernate對數據庫的訪問。
PO,持久化對象,其中完全采用普通Java對象作為持久化對象使用,也是將數據庫中的對象對應到Java對象,從而使對數據庫的操作更加簡單。大家可以利用MyEclipse自動生成POJO及其對應的配置文件。
(4)common層。
該層存放了公用的代碼,包括對數據的增、刪、查、改操作的封裝,異常處理,日志處理,數據類型的轉換,時間的處理,文件上傳與發送郵件的方法,基礎Action類,以及系統要使用的常量。其中,對數據庫的操作的封裝主要是由MyEclipse中的方法自動生成。
2.3 數據庫層
數據層負責存放和管理應用的持久性業務數據。Hibernate提供了從映射文件到數據庫Schema的轉換工具,即hbm2ddl[7]。
執行該任務的Java類net.Sf.Hibernate.tool.hbm2bbl.SchemaExportTask。在該系統中是應用MyEclipse中的自動轉換工具實現數據庫與持久性數據的對應。
3 結語
該系統結構清晰,注重功能的功能性和使用方便性。根據各功能的特點,將各功能的流程考慮周到,流程設計完整。用戶如有需要,可以申請查看統計權限,系統具有一定的靈活性。同時應用了SSH架構,在簡化代碼的同時,使系統具有較強的可擴展性。
參考文獻
[1] 張芹.關于軟件開發中數據庫設計相關問題的探討[J].信息通信,2015(12):166-167.
[2] 宋陽.新時期高校科研信息化建設工作思考[J].中國高校科技,2014(7):71-73.
[3] 陳亞輝,繆勇.Struts+Spring+Hibernate框架技術與項目實戰[M].北京:清華大學出版社,2012.
[4] 傅偉,高海俠,涂剛,等.基于J2ME-J2EE的高校科研信息管理系統的設計與實現[J].微計算機應用,2011(7):76-80.
[5] 王進.B/S模式下的三層架構模式[J].軟件導刊,2011(3):30-31.
篇5
【關鍵詞】Struts2;Hibernate;辦公自動化
1.介紹
目前,我們處于一個信息化和大數據的時代,各行各業都需要對大量信息進行處理。在日常辦公中,人們開始面對越來越多的復雜與繁冗的數據,傳統的辦公方式逐漸無法滿足人類和社會發展的需求。計算機技術的迅猛發展,使其在辦公室中的應用越來越廣泛,辦公自動化開始成為主流的辦公方式。國務院電子振興辦辦公自動化專家會議對辦公自動化作了如下定義:辦公自動化是利用先進的科學技術,不斷使人的辦公業務活動物化于人以外的各種設備中,并由這些設備與辦公室人員構成服務于某種目標的人機信息處理系統。如今,辦公自動化系統已經逐漸進入各個行業,其便利的信息交流方式,較高的辦公工作效率受到了人們的歡迎[1]。
2.系統設計
2.1 系統目標
本文從辦公自動化系統的基礎要求出發,將辦公的方便性和高效性考慮入內,達到降低系統的耦合性的目標,并實現OA辦公自動化系統的主要功能模塊的操作。這樣可以保證系統實現后的高效性、高擴展性和靈活性,達到協助工作人員處理日常工作的目標,從而減少了管理的繁瑣,實現辦公自動化和信息化。
系統采用BS構架模式并結合時下最流行的SSH框架,利用因特網信息交流的方便性與高效性,合理設計與規劃,最終實現員工信息管理、在線交流信息管理、個人公開文件夾管理、會議安排管理等典型辦公自動化功能。
2.2 相關框架介紹
1)Struts2框架介紹:Struts2框架是在Struts1和WebWork技術基礎上進行合并而產生的。Struts2以WebWork為核心,采用攔截器的機制實現用戶的請求。其主要分為模型、視圖和控制器三部分(即MVC),主要的設計理念是通過控制器解除表現邏輯和業務邏輯的耦合性,以提高系統的可維護性、可擴展性和重用性。
2)Hibernate框架介紹:Hibernate是一個開源的對象關系映射框架,它對JDBC進行了非常輕量級的對象封裝,方便開發人員開發,使其可以隨心所欲的使用對象編程思維來操縱數據庫,從而提高開發效率[2]。Hibernate的HQL查詢數據語言是根據SQL面向對象的最小的擴展來設計的,在對象和關系領域間提供了一個交互的橋。
3)Spring框架介紹:spring是為了解決應用程序開發復雜性而創建的一個開源框架。其主要優勢之一是分層架構,分層架構方便開發者選擇組件。Spring提供了面向切面編程的豐富支持,允許通過分離應用的業務邏輯和系統級服務進行內聚性開發。其簡單性、可測試性和松耦合性使得應用程序受益。
2.3 功能模塊劃分
經過我們對辦公單位實際情況考察并認真分析后,本系統包括的用戶有普通員工、部門領導和系統管理員三個角色,其分別具有不同的權限。普通員工具有個人信息的修改功能,可以查看部門通訊錄,管理個人在線信息,并可以查看個人日程安排和委托他人事項。部門領導不僅具有普通員工所有功能,還可以安排會議,查看會議記錄,并安排所在部門員工的待辦事項。系統管理員的權限最高,主要負責管理通知通告,具有對部門信息、員工信息和角色信息的增刪查改的功能。該OA辦公自動化系統功能體系結構如圖2.1所示:
2.4 數據庫設計
OA辦公自動化系統的設計離不開數據庫的設計,而該系統在設計過程中遇到的主要難點也是數據庫設計。數據庫的設計在整個系統設計過程當中扮演著舉足輕重的角色,一個好的數據庫能對系統的實現起到事半功倍的作用。系統在數據庫設計中需要充分考慮數據之間聯系,保證數據庫設計的規范化,從而在系統實現和之后的維護過程中不會發生插入、刪除和更新異常,使得后續工作高效的進行。本系統主要數據表列舉如下:
該系統數據庫管理系統采用MySQL,其開源性、多線程性和健壯性深受人們的歡迎[3]。數據庫部署于后臺服務器中,只有系統管理人員才能通過一定的認證訪問數據庫表中的數據。除此以外,系統不提供任何訪問數據庫的接口。
3.系統實現
3.1 關鍵模塊實現
在OA辦公自動化系統實現過程中,在線信息和工作安排兩個模塊相對于其它較為復雜,同時也耗費了大量的精力和時間。在此將這兩個模塊的實現過程詳細介紹如下:
a)在線信息管理
在線信息模塊相對復雜主要是因為在系統的首頁需要動態地顯示用戶的未讀信息數目,需要用到局部動態刷新技術——Ajax技術[4]。同時,用戶對在線信息模塊的增、刪、查、改操作相對于其它模塊也更多,因此對我們的數據庫設計提出了更高的要求,這也增加了該模塊的復雜度。在數據庫表的設計過程中,難度主要集中在對于已讀信息、未讀信息、已發信息、草稿等的表示和狀態轉換的設計,需要設計人員極大的耐心。
b)工作安排管理
工作安排管理模塊涉及到員工之間相互指定待辦事項,而該功能又需得到相互間的授權,使其業務邏輯較為復雜。同時,待辦事項的狀態最終會從未完成轉換為已完成,這也增加了該模塊的難度。
授權的業務流程也較為復雜,例如員工A想向員工B指定代辦任務,員工A必須首先得到員工B的授權。與此同時,在得到B的授權后,A可以向B指定代辦任務,B也可隨時解除授權。因此,在設計該模塊的數據庫表時需要考慮復雜的邏輯關系,對數據庫的設計能力提出了很高的要求。此處涉及到了user表、authorization表以及assignment表大量的增、刪、查、改的操作,工作量較大。
3.2 技術難點
在文件管理功能模塊中,維護與管理文件上傳和下載相對于其它操作較為復雜,下載模塊需要進行較為復雜的struts配置,同時上傳和下載時還要進行編碼轉換。
針對文件夾/文件的操作主要是增加文件夾、上傳文件、更改文件名、刪除文件/文件夾、分享文件夾、獲得全部文件夾。這部分的難度主要集中在SQL語句,需要有足夠耐心和細心。
對于上傳文件這塊,其struts的配置文件相對簡單。而文件下載模塊struts比較復雜,其主要配置文件如下:
application/octet-stream;charset=utf-8
此處將下載文件contentType統一指定為application/octet-stream,同時將charset的值設置為utf-8
attachment;filename=”${name}”
attachment是告訴瀏覽器下載該文件,而filename則是在action中接收該文件的文件名,以便在用戶保存該文件時使用該文件名。
文件下載模塊的action部分,其主要步驟如下:
1)定義所需的變量;
2)創建需要下載的文件
File file=new File(“保存文件的路徑"+dowFileName)
3)將下載的字節流寫入剛剛創建的文件
try{
//從file文件中獲得輸入字節流
fdlInputStream=new FileInput-Stream(file);
//下載時指定的文件名字用iso8859 -1編碼
name=new String(dowFileName.getBytes(),"iso8859-1");
}
catch(FileNotFoundException e){
System.out.println(“指定文件找不到”);
e.printStackTrace();“
}
文件上傳模塊action部分,主要步驟如下:
1)聲明所需的變量,其中許多變量是固定名稱;
2)創建新的文件,保存上傳的文件
File fileTo=new File("上傳文件的保存路徑"+uploadFileName);
3)將頁面接收到的文件寫入剛剛創建的文件中去
TestCopy.copy(upload,fileTo)
4.結束語
本文結合現代辦公需求,依賴當今流行的SSH框架整合技術,具有良好的分層體系,使得該系統具有良好的擴展性,可維護性和穩定性。經過后期的內部測試,該系統很大程度上提高了辦公效率,節約了成本和資源,其高效數據處理能力在一定程度推進了企業資源計劃(ERP)的實現,值得繼續推廣和使用。
參考文獻
[1]孫敏.辦公自動化[M].北京:北京理工大學出版社,2010.
[2]李剛.輕量級JavaEE企業應用實戰(第3版)-Struts2 +Spring3+Hibernate整合開發[M].北京:電子工業出版社,2012.
[3]周靖,許青松譯.Leon Atkinson.MySQL核心編程:高級開發者者指南[M].北京:清華大學出版社,2003.
[4]王莉軍.在Web2.0設計模式下利用Ajax技術實現網頁數據動態更新[J].渤海大學學報(自然科學版),2008,3:29.
作者簡介:
篇6
1 相關概念
1.1 Struts 2框架
Struts 2是Struts的下一代產品,是在WebWork基礎上發展起來的。Struts 2的工作流程為[1]:當用戶發送請求時,由核心控制器FilterDispatcher接受請求然后決定調用適當的action,同時,WebWork的攔截器鏈自動對請求應用常用的功能,如工作流、驗證、文件上傳等功能。然后回調Action的execute方法,execute方法該執行諸如存儲數據、檢索數據之類的數據庫相關操作,由于Action只是一個控制器,因此,execute方法會調用業務邏輯組件處理用戶的請求,最后Action的execute方法的執行結果將被輸出到瀏覽器中。
1.2 Hibernate框架
Hibernate是一個面向Java環境的O/R mapping工具,通過對JDBC的封裝,屏蔽了底層的數據庫操作,把對象模型表示的對象映射到基本SQL的關系模型數據結構中,并且使用數據庫和配置文件來為Web應用程序提供JSP持久化服務[2]。
1.3 Spring框架
Spring是Java EE領域一個非常優秀的框架,它提供了一種輕量級的IOC容器,該容器負責創建、管理應用組件。從最前端的控制器,到中間層的業務邏輯組件,以及底層的DAO組件,都處于Spring容器的管理之下,以一種低耦合的方式運行[3]。
2 基于S2SH框架Ajax應用
本節將以注冊表單中驗證用戶名是否可用為例,對S2SH框架下Ajax的使用方法進行探討。
2.1 環境搭建
本文使用Eclipse 6.6開發平臺創建Web項目,然后依次為項目添加Spring 2.0和Hibernate 3.1支持,由于Eclipse 6.6中沒有提供通過向導添加Struts 2支持的方式,因此需要手工將struts2-core-2.0.8.jar、xwork-2.0.3.jar和ognl-2.6.11.jar等必要的jar包復制到項目的WEB-INF/lib目錄下。
2.2 創建實體類和映射文件
可以使用MyEclipse工具自動生成數據表account的實體類Account.java和映射文件Account.hbm.xml,并將這些文件存放在com.test.entity包下。
2.3 業務邏輯層開發
1)業務層接口
編寫接口文件UserBiz.java,將其放在com.test.servcice包下。在接口中聲明用戶名驗證方法。
public interface UserBiz {
public boolean checkUser(String username);
}
2)業務層接口實現類
編寫業務層接口UserBiz的實現類UserBizImpl.java,將其com.test.servcice.impl包下。
public class UserBizImpl implements UserBiz {
private UserDAO userDAO;
public void setUserDAO(UserDAO userDAO) {
this.userDAO = userDAO; }
public boolean checkUser(String username) {
return userDAO.isExist(username); } }
2.4 數據訪問層開發
1)數據訪問層接口
編寫數據訪問層接口類UserDAO.java,將其放在com.test.dao包下,在接口中聲明用戶名驗證方法。
public interface UserDAO {
public boolean isExist(String username);
}
2)編寫數據訪問層接口UserDAO的實現類UserDAOImpl.java,并放在com.test.dao.impl包下。
public class UserDAOImpl extends HibernateDaoSupport implements UserDAO {
public boolean isExist(String username) {
List list = getHibernateTemplate().find("from Account ac where ac.name = ?" , username);
if (list != null && list.size() >= 1){
return true;
}else{
return false; } } }
2.5 Spring與Hibernate、Struts 2整合
給項目添加完Spring、Hibernate和Struts 2支持后,為了能將三者整合起來,還需要對相關的配置文件進行設置,主要的配置文件包括:applicationContext.xml、struts.xml和web.xml。
1)Spring與Hibernate整合
由于篇幅,這里省略了數據源和sessionFactory的配置代碼,在applicationContext.xml文件中完成userDAO Bean的定義,并將sessionFactory注入到UserDAO中,配置如下:
name="sessionFactory">
接著完成userBiz Bean的定義,并將userDAO注入到UserBiz中,配置如下:
2)Struts 2與Spring整合
為了讓系統中Struts 2框架起作用,必須在web.xml中配置Struts 2的核心過濾器,該核心過濾器負責攔截所有用戶的請求,代碼如下:
strutsorg.apache.struts2.dispatcher.FilterDispatcherstruts/*
Struts 2與Spring整合的關鍵在于,要讓Struts 2的Action可以訪問Spring容器中的業務邏輯組件。有兩種整合策略,第一種策略是將Aciton實例的生成、管理交給Spring容器來負責;第二種策略是使用Spring插件的自動裝配機制,即當Spring插件創建Action實例后,立即將Spring容器中對應的業務邏輯組件注入到Action實例。這里選擇后一種策略,因此需要安裝Struts 2的Spring插件,即將struts2-spring-plugin-2.0.8.jar文件復制到項目的WEB-INF/lib目錄下,同時由于Spring框架還依賴于commons-logging.jar文件,該文件也需要復制到WEB-INF/lib目錄下。此外,在使用Spring容器前,必須先進行Spring容器的初始化,可以使用ContextLoaderListener類,該類會在Web應用程序啟動時自動加載WEB-INF下的applicationContext.xml配置文件,以創建Spring容器。使用ContextLoaderListener類時只需在web.xml文件中添加如下代碼:
org.springframework.web.context.ContextLoaderListener
并在web.xml文件中指定spring的應用上下文路徑,配置如下:
contextConfigLocation
classpath:applicationContext.xml
為了將Struts 2的Action交由Spring處理,需要在struts.xml文件中添加一個常量,配置如下:
這樣,所有的Action無需在applicationContext.xml中顯式配置依賴的業務邏輯組件,只要為Action提供一個setXxx的方法,Spring可將名為xxx的Bean依賴注入給該Action組件。
2.6 使用Struts 2的JSON插件實現用戶名Ajax驗證
JSON是JavaScript對象符號的簡稱,是一種輕量級的數據交換格式。JSON插件提供了一種名為json的ResultType,如果給某個Action指定了一個類型為json的Result,則該Result無需映射到任何視圖資源,而是由JSON插件負責將Action中通過屬性設置的狀態信息序列化成JSON格式,并返回給調用頁面,從而完成Ajax交互。為了使用JSON插件,需要將jsonplugin-0.7.jar文件復制到項目WEB-INF/lib目錄下。
以注冊表單中驗證用戶輸入的用戶名是否可用為例,當用戶輸完用戶名后,系統應立即提示該用戶名是否可用,可以在用戶名文本域失去焦點時,立即發送一個異步請求,將輸入的用戶名作為參數發送到服務器進行判斷。注冊表單Register.jsp中主要的代碼如下所示:
上述代碼中,validateName是一個JavaScript函數,用于向服務器端發送異步請求,代碼如下所示:
function validateName(){
var url = 'validateName.action';
var params = 'username='+document.getElementById('username').value;
var myAjax = new Ajax.Request(url,{method:'post', parameters:params,
onComplete: processResponse,asynchronous:true }); }
每當創建Ajax.Request對象時,就會發送一次Ajax請求。其中,url表示請求的地址,method表示發送請求的方式,parameters表示請求的參數,onComplete用于指定回調函數,asynchronous表示是否異步發送請求。為了使用Ajax.Request對象,需要在注冊表單中導入prototype-1.4.0.js函數庫,通過該函數庫可以更加簡單地訪問頁面中的DOM節點,從而更好、更簡單地實現Ajax交互。頁面中導入該函數庫的代碼如下所示:
回調函數processResponse代碼如下所示:
function processResponse(request){
$("message").innerHTML = request.responseText.parseJSON().message; }
上述代碼中使用了字符串的parseJSON()方法,使用該方法時需要在注冊表單中導入json.js函數庫,同時需要將該函數庫復制到項目中。導入json.js函數庫的代碼如下所示:
從創建Ajax.Request對象時使用的參數url可以看到,該Ajax請求是發送給validateName.aciton的,該Action是一個普通的Action,代碼如下所示:
public class ValidateUserNameAction implements Action {
private UserBiz userBiz; //該屬性代表業務邏輯組件的引用
private String username; //該屬性用于封裝用戶名請求參數
private String message;//該屬性用于封裝服務器響應的提示消息
public String execute() throws Exception {
if(userBiz.checkUser(username)){
setMessage("對不起,該用戶已存在,請重換一個!");
}else{
setMessage("恭喜你,"+username+" ,該用戶可以使用!");}
return SUCCESS; }
…… //由于篇幅,此處省略了屬性userBiz、username和message的setter方法 }
上述Action代碼中,由于Action返回的結果總是“SUCCESS”邏輯視圖名,如果業務邏輯userBiz中的checkUser方法驗證用戶名可用,則將該Action的message屬性設置為:“恭喜你,"+username+" ,該用戶可以使用!”,否則設置為“對不起,該用戶已存在,請重換一個!”。而message屬性的值是需要直接顯示在注冊表單的message元素中的,因此需要使用Struts JSON插件為該Action指定一個json類型的Result,這樣就無需使用視圖頁面來輸出響應結果,系統會將該Action中的message屬性序列化為以JSON格式的字符串,并將該字符串作為服務器的響應結果。為了實現上述功能,需要在struts.xml文件中配置該Action,配置如下:
客戶端收到JSON格式的字符串后,使用parseJSON()方法將字符串解析為一個JSON對象,該對象包含的屬性與Action完全相同,也包含了username和message這兩個屬性,其中message屬性所設置的內容顯示在id為message的HTML元素中。
2.7 使用DWR框架實現用戶名Ajax驗證
除了使用Struts 2的JSON插件外,還可以通過DWR框架[4]實現用戶名的Ajax驗證。為了讓Web應用增加DWR支持,需要將dwr.jar文件復制到項目的WEB-INF/lib目錄下。DWR框架可以自動將普通的Java類轉化為javascript類,這個過程是通過一個核心Servlet的轉換實現的。為了讓DWR的核心Servlet能夠起作用,需要在web.xml添加如下配置:
dwrorg.directwebremoting.servlet.DwrServlet
dwr/dwr/*
在web.xml中配置完DWR的核心Servlet后,該Servlet負責將服務器端的Java方法暴露出來,要暴露出來的方法是在dwr.xml文件中指定的,因此需要在項目中新建一個dwr.xml文件,并進行如下配置:
根據上述配置,從spring容器中取得beanName為userBiz的bean,即將UserBizImpl類創建為一個名為CheckUserExist的JavaScript對象。include表示允許調用的方法,這里將允許使用UserBizImpl類中的checkUser方法。為了能在表單中調用JavaScript對象,必須進行如下引用:
當用戶在注冊表單Register.jsp中輸入用戶名,失去焦點后,執行JavaScript函數checkUserExists,該函數中通過JavaScript對象CheckUserExist調用UserBizImpl類中的checkUser方法。代碼如下所示:
function checkUserExists(){
var username = document.getElementById('username').value;
CheckUserExist.checkUser(username,callBackFunction);}
其中,callBackFunction為回調函數,代碼如下所示:
function callBackFunction(isExist){
if (isExist){//isExist=true
document.getElementById('message').innerHTML="該用戶已存在";
}else{ //isExist=false
document.getElementById('message').innerHTML="該用戶可以使用";
} }
3 結束語
篇7
(西安交通大學數據與信息中心,陜西西安710049)
摘要:通過對高校科研管理現狀的分析與研究,運用基于Struts,Spring和Hibernate的輕量級Web集成開發框架,并結合Ext 富客戶端技術,從科研管理的基礎數據組織入手,認真分析科研業務管理流程及信息交互特點,最終構建高效、靈活和穩定的高校科研管理信息系統。該系統實現了科研管理的網絡化和數字化,有效提高了信息的集成效率,提升了科研信息精細化管理水平。
關鍵字:科研管理;SSH;Ext;精細化管理
中圖分類號:TN911?34 文獻標識碼:A 文章編號:1004?373X(2015)20?0052?03
Research and application of scientific research management system based on Ext +SSH
Integrated development framework
GAO Zhan,SUO Zhihai
(Data and Information Center,Xi’an Jiaotong University,Xi’an 710049,China)
Abstract:In this paper,the current situation of research project management in universities is studied. Proceeding from ba?sic data organization of scientific research management,the scientific research management procedures and information interac?tion characteristics are analyzed by using light?weighted Web integrated development framework based on SSH(Struts Spring Hi?bernate) and rich client technology of Ext. Finally,a scientific research management system based on Ext+SSH integrated de?velopment framework with the advantages of reliability, efficiency and flexibility was constructed. The digitization and net?working of scientific research management were achieved by means of the system,which improve the efficiency of information in?tegration and promote the level of scientific research information management.
Keywords:scientific research management;SSH;Ext;delicacy management
學校科學研究能力的發展是制約高校整體辦學水平的重要因素,對于建設“研究型大學”更是具有舉足輕重的作用。近年來,隨著學校科研工作范圍和規模的迅速擴大,信息交互頻繁,科研業務的復雜度日益增大,這就要求科研信息要做到快速流轉和有效管理,為了滿足科研管理系統建設的實際要求,構建了基于Struts,Spring,Hibernate 輕量級集成開發框架和Ext 富客戶端技術的高校科研管理系統,為科研工作提供了重要保障。
1 SSH 和Ext 框架介紹
1.1 基于SSH的Web系統開發框架介紹
SSH 是一種基于J2EE 技術的MVC 軟件開發框架,與J2EE 重量級體系相對應,輕量級Web框架SSH 不僅保持了J2EE的優勢(例如事務管理),還簡化了Web的開發[1],提高開發效率。SSH 集成框架從邏輯上分為三層:表示層、業務邏輯層、數據持久層[2]。系統架構圖如圖1所示。在表示層,Struts 作為系統的整體基礎架構,它利用控制器分離模型和視圖,把用戶界面和事務邏輯進行分離,從而極大地縮短了開發時間。在數據持久層,Hibernate 框架對JDBC 進行了輕量級的對象封裝,將數據庫表通過配置文件映射成對象。程序開發人員無需關心數據庫的具體結構,直接操作數據對象即可。Spring 管理Struts 和Hibernate,通過Spring 的反轉機制,利用容器來創建對象,即在運行期間將對象的依賴關系注入到組件之中,使得應用代碼可直接使用實例。
1.2 基于Ext的富客戶端技術
Ext是一個基于純HTML/CSS+ JavaScript技術的開源的富客戶端應用程序框架,它與后臺開發技術無關,可以用在多種開發語言的開發應用中,使B/S應用更具有活力和生命力,大幅度提升了用戶體驗。Ext提供了豐富的跨瀏覽器UI組件,靈活采用JSON和XML為交換格式,減輕了服務端表示層的負荷,從而達到客戶端的RIA 應用[3]。Ext還提供了豐富的學習文檔和方便易查的API文檔,方便開發者查詢和使用。
Ext 在開發中主要使用到Application,Controller,Viewport,View,Store,Model 和Data 七大類[4],其邏輯關系如圖2 所示。Application 控制Ext 到找對應Con?troller 與View 等Javascript 文件;Controller 用來實現View 上的所觸發事件和操作,并將對應的View,Store ,Model 進行關聯;Model 和Store 是模型數據類,主要是給View類提供數據;View主要負責頁面展示。
2 科研管理系統的設計與實現
2.1 科研管理系統的功能模塊設計科研管理系統的設計與開發以“高效管理、服務師生、信息共享、公正公開”為建設目標,以科研管理的內容、流程為中心。從管理內容的覆蓋范圍來看,科研管理系統的主要分為了科研項目管理、科研成果管理、經費管理、科研問題管理、科研機構管理、科研辦公管理功能、統計管理、專家庫管理、基地管理等9大功能模塊。各個功能模塊具有相對獨立性,同時也相互聯系。從服務對象來看,為校領導、學院、科研基地、教師、科研管理人員5大服務對象提供全方位的服務。
2.2 基于Ext和SSH集成框架的系統架構設計良好架構的選擇對提高項目的開發效率有著重大影響。基于Ajax 的Web 應用程序打破了傳統Web 程序開發模式,大大提高了程序的可用性用戶體驗。因此SSH和Ext的組合構建了一個具有健壯架構體系和具有良好用戶體驗的Web系統開發架構[5]。
Ext+SSH 集成架構整合的基本原理如圖3 所示。
Ext 實現Struts 框架中的頁面表示和頁面跳轉,管理界面上的各種操作事件,同時做出相應的響應,由于其提供了豐富的UI 組件,并采用JSON 數據格式傳輸數據,提高程序員的開發效率[6]。在業務層,Spring實現MVC三層分離,控制各層負責不同的任務,協作完成一次完整的請求/響應。在數據持久層,Hibernate 實現數據庫表到Java類的映射,簡化數據庫事務管理。
2.3 關鍵技術的實現
Ext框架擁有豐富的組件,而且創建組件的方法也非常簡單,可以直接通過new 關鍵字來創建,比如創建一個窗口,可以使用new Ext.window(),創建一個表格可以使用new Ext.grid.GridPanel()。在本系統中,用戶登錄后的首頁面板顯示了用戶基本信息,科研通知公告,代辦事宜等信息,它們可以通過拖拽的方式調整位置,這里采用的Ext的Ext.ViewPort組件來實現頁面布局,它可以隨著瀏覽器的大小而自適應。部分核心代碼如下所示:
科研數據不僅數量大,而且數據關聯性也較強,在每個數據列表上建立快捷查詢項是非常必要的,如圖4所示。
圖4 Ext的panel組件實現快捷查詢頁面
以下代碼是利用Ext的panel組件實現的快速查詢頁面的代碼:
3 結語
采用Ext+SSH集成架構開發的科研管理信息系統,結構清晰,快速高效,可維護性和靈活性較高。目前該系統已在西安交通大學科研院的科研管理工作中得到了應用,體現了“人性化操作”的設計理念,充分兼顧了校領導、科研管理人員、教師等用戶的不同需求,實現了與校園信息化平臺的其他應用系統對接,提升了學校科研管理能力和水平。
參考文獻
[1] 邵雄凱,楊京濤.基于Struts,Spring和Hibernate的集成框架研究[J].軟件導刊,2007(23):25?28.
[2] 張瑋,陳為.基于Struts+Spring+Hibernate框架的探討與研究[J].長春大學學報,2006(12):75?80.
[3] 王曉燕,宋紹云.Ext的組件體系結構研究[J].電腦知識與技術,2011(9):1999?2002.
[4] 田建偉,黎曦,劉瀟瀟,等.基于Ext和SSH 開發架構的電力生產信息系統的研究與應用[J].湖南電力,2014(2):16?19.
[5] 郭永樂,劉列根,張宇.基于輕量級框架構建Web應用[J].電子技術應用,2007(4):78?90.
[6] 王淵,懷自國,羅怡桂.基于Ext+Spring+Hibernate的Web系統開發架構的研究與應用[J].計算機與現代化,2009(12):78?81.
篇8
關鍵詞:Android LinuxSSH QuickSSHD可行性
中圖分類號:TN918.1 文獻標識碼:A 文章編號:1007-9416(2012)03-0000-00
Android操作系統最初由Andy Rubin領頭的開發小組開發,最初主要支持手機。2005年由Google注資收購經過開發改良,逐漸擴展到平板電腦及其他領域上。Android操作系統采用了軟件堆層(software stack,又名軟件疊層)的架構,主要分為三部分。底層Linux內核只提供基本功能,其他的應用軟件則由各公司自行開發,部分程序以Java編寫。
SSH為Secure Shell的縮寫,由IETF的網絡工作小組(Network Working Group)所制定;SSH為建立在應用層和傳輸層基礎上的安全協議。
傳統的網絡服務程序,如FTP、POP和Telnet其本質上都是不安全的;因為它們在網絡上用明文傳送數據、用戶帳號和用戶口令,很容易受到中間人(man-in-the-middle)攻擊方式的攻擊。就是存在另一個人或者一臺機器冒充真正的服務器接收用戶傳給服務器的數據,然后再冒充用戶把數據傳給真正的服務器。而SSH是目前較可靠,專為遠程登錄會話和其他網絡服務提供安全性的協議。利用SSH協議可以有效防止遠程管理過程中的信息泄露問題。透過SSH可以對所有傳輸的數據進行加密,也能夠防止DNS欺騙和IP欺騙。
SSH之另一項優點為其傳輸的數據是經過壓縮的,所以可以加快傳輸的速度。SSH有很多功能,它既可以代替Telnet,又可以為FTP、POP、甚至為PPP提供一個安全的“通道”。有點類似于VPN,但是它在保密方面的能力,遠遠強于VPN。
SSH協議框架中最主要的部分是三個協議:傳輸層協議、用戶認證協議和連接協議。同時SSH協議框架中還為許多高層的網絡安全應用協議提供擴展的支持。
QuickSSHD在智能手機中的使用。
通過下面介紹的一個使用過程,用來證明SSH安全傳輸協議在Android平臺下的可行性,本次實驗使用的軟硬件及其各版本如下:(1)基于Android2.3.5版本的智能手機一部(已經獲得root權限),(2)x86電腦一部;(3)在手機端安裝了QuickSSHD的2.0.2(已付費)版本軟件;(4)在電腦端安裝了FileZilla軟件,版本號是3.5.3。
QuickSSHD支持sftp與xterm(命令行終端)方式管理手機,可USB可3G可wifi,我這次使用的軟件是FileZilla,因此測試了sftp功能,用的是wifi登錄方式進行實驗。在圖1所示是QuickSSHD軟件登錄界面。
當你安裝好QuickSSHD軟件后開始使用,你可以獲取一個由軟件自動提供給你的IP地址(本次實驗中得到的地址是192.168.1.102),且你進入時可以提供密碼或者共享Keys的方式進行加密,一般建議采用密碼的形式,這個密碼是自定義的,也就是在x86電腦端開啟軟件FileZilla時所需輸入的密碼,第一次使用后,可以將這個IP地址和密碼都設置為常用,以后登錄不必每次都輸入。
當在Android端設定好命令之后,你可以到x86電腦端設定好軟件FileZilla的各項命令,上圖顯示我本次實驗是進行sftp傳輸的實驗,使用的登錄名是root,密碼就是你在Android端已經輸入的密碼,最后一個是端口,這個一般是固定的,sftp都是采用的22端口,圖2所示是FileZilla軟件在Android端和x86計算機端傳輸文件的界面,其中左圖為x86計算機端路徑,右圖為Android端的/sdcard路徑所示。
設置好點擊快速連接之后,就會進入圖5所示界面,該界面就是一個進行進行sftp方式傳輸的界面,左半面是x86電腦的磁盤驅動器,右半面你可以選擇Android操作系統所屬的各個文件夾,因為Linux是特性是利用文件管理系統,因此,你只要管理好了文件,也就是管理好了這個Linux,乃至你的Android系統,由于本次軟件所測試的sftp協議在Android上的傳輸可行性,因此我在右半面選擇的是該電子設備所攜帶的sdcard文件夾。通過測試,通常使用在Linux操作系統中的sftp傳輸協議完全能夠使用在x86電腦和Android系統系統之間。
在本篇文章所述中,雖然只是針對SSH協議的sftp傳輸方式進行了驗證,但是SSH傳輸協議的優點遠不止此,因為是一種相對安全的傳輸協議方式,SSH協議今后還會在更多的應用區域得到更加廣泛的推廣,例如需要在公共區域的WIFI上網,雖然利用VPN也可以,但是有的地方封殺VPN,SSH比較安全,當然,還可以利用更改配置文件的方法,更改SSH的默認端口和對登錄IP進行限制,進一步的保證利用SSH協議傳輸數據的安全性。
參考文獻
[1] 余永洪.用SSH技術遠程管理Linux服務器.《計算機與現代化》,2002.
[2] 孔祥真,徐小龍,邢宏健.Linux操作系統服務器SSH遠程管理配置.《網絡安全技術與應用》,2011.
[3] 劉平.Android手機訪問服務器的一種數據交互方法.《電子設計工程》,2010.
[4] 劉振昌.讓SSH遠程管理更安全.《中國教育網絡》,2011
篇9
關鍵詞:SSH架構;Appfuse;代碼自動生成
中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2008)20-20272-03
Application Research on Automatic Code Generation Based on SSH Architecture
LI Jin-hai
(Modern Education Technology Center,Qingdao Technological University,Qingdao 266033,China)
Abstract:There are several common problems in the enterprise-ready application development, such as long project development life, low development efficiency, slow response to changing demands. Automatic code generation technology is the very one of effective ways to solve these problems. SSH architecture is one of the most widespread used J2EE architectures in the present. This paper discusses the automatic code generation technology which can be used in SSH architecture. Through the research on the Open Source framework Appfuse, this paper distracts its fast development module based on SSH architecture, improves the code generation ability of the module, and applies this improved module in the development of a privilege management system to have a check if it works well.
Key words:SSH Architecture;Appfuse;Automatic Code Generation
隨著企業信息化的發展,J2EE技術的應用已經日益廣泛。在J2EE體系架構中,基于各種開源框架的J2EE架構的應用逐漸成為主流。優秀的開源框架在J2EE中的應用在一定程度上也促進了企業級應用的發展。然而,在實際開發中仍然存在著項目開發周期長,開發效率低,不能快速響應需求變化等普遍問題。代碼生成技術的發展已逐漸成為解決上述問題的有效途徑之一。本文將對應用廣泛的SSH架構的代碼自動生成展開討論。
1 SSH架構
SSH架構就是一個基于三種開源框架Stuts,Hibernate和Spring的輕量級J2EE架構,目前已是企業級應用開發中應用最廣泛的J2EE架構之一。其架構層次主要劃分為:表現層,業務層,數據持久層和領域對象層。在表現層中應用了Struts框架,這種基于請求驅動的MVC框架給架構也帶來了清晰的MVC劃分。在業務層引入Spring,使用其提供的IoC容器對業務類進行裝配和管理,使類與類之間的耦合度降到最小,利用其提供的AOP框架對業務層中的事務進行聲明式管理。由于Spring對Hibernate提供了良好的支持,通過使用HibernateTemplate可以方便地對數據進行持久化操作。數據持久層正是由Spring和Hibernate共同打造的。其中DAO接口的裝配和管理也是由Spring提供的IoC容器實現的。
該類架構層次清晰,結構明顯,同一層中類或接口的代碼往往具有類似的結構,非常適于使用代碼生成工具實現部分代碼自動生成。
2 AppFuse框架
AppFuse 是一個開源項目,它使用了在 Java 平臺上構建的開源工具來幫助開發者快速而高效地開發 Web 應用程序。它使用 Ant 來驅動測試、代碼生成、編譯和部署。它提供了目錄和包結構,以及開發基于 Java 語言的 Web 應用程序所需要的庫。AppFuse支持的Web框架有:Struts、Spring MVC、WebWork、JSF and Tapestry,支持的持久層框架有:Hibernate和iBates,支持的測試環境有:DBUnit,Junit,Jmock和Canoon’s Web Test。AppFuse中集成了XDoclet,并應用它自動生成代碼和相關的配置文件。
Appfuse實現代碼自動生成的核心就是應用XDoclet引擎按照代碼模板文件進行代碼生成。Appfuse要支持很多不同的框架和技術,所以其中的代碼模板就要做到最通用。代碼模板通用性的提高,在一定程度上降低了其功能和效率。而且,Appfuse中代碼自動生成模塊只能生成簡單少量的Spring配置文件,大部分的配置工作沒有實現自動化。基于此,本文對Appfuse中支持Struts,Hibernate和Spring的代碼自動生成模塊進行了提取,改進了其中的代碼模板文件,增強了該模塊的代碼自動生成能力,并使得Spring配置文件的大部分配置工作實現自動化。
3 基于Struts,Hibernate,Spring框架的J2EE架構的代碼自動生成
3.1 代碼自動生成的任務列表
因為Ant配置文件build.xml是代碼自動生成的控制核心,所以可以通過改寫build.xml文件提取出Appfuse中的相關模塊。修改后的build.xml文件包括:變量配置如項目包的名稱、源文件目錄等,定義相關類的引用路徑,還有一系列的代碼生成任務。任務列表如下:
<target name="help">
<echo message="提供以下任務:" />
<echo message="create-dir-->生成工程目錄"/>
<echo message="generate-hbm -->運行HibernateDoclet,生成Hibernate 類的映射文件" />
<echo message="schemaexport -->運行SchemaExport,利用hbm.xml 文件生成數據表" />
<echo message="gen-forms --> 運行xdoclet,生成相應的Form類文件"/>
<echo message="webdoclet -->運行webdoclet,生成Struts配置文件和validation.xml" />
<echo message="gen --> 運行xdoclet生成相應類的dao,daoHibernate,manager等文件"/>
<echo message="move-gens--> 把生成相應類的dao,daoHibernate,manager等java文件移到當前工程文件夾下"/>
<echo message="gen-springxml --> 生成spring的配置文件context-spring.xml" />
</target>
3.2 對Appfuse中代碼自動生成模塊的改進
使用XDoclet自動生成代碼需要有代碼模板以及相應模板語言的支持,另外改進該模塊時加入了一些通用基類,這些都是代碼自動生成模塊的基本組成部分。代碼模板文件主要應用了Form和Method兩個標簽,其中Form標簽是Appfuse中自定義的,而Method標簽則是在原有XDoclet標簽的基礎上做了擴展。提取出的模塊仍然需要Appfuse中FormTagsHandler和MethodExTagsHandler這兩個標簽類的支持,應把他們置于模塊中WEB-INF的Class目錄下。以下就是對原有模板文件的修改及改進:
(1)對Dao.xdt模板文件進行了改進,添加了兩個常用方法,merge()以及find()方法。前者是用于在一個session中存在兩個相同的對象擁有同一個identifer的情況下,而后者則用于執行HQL查詢語言。兩者在項目開發中使用頻率頗高,所以需要增加。
(2)對相應的DAOHibernate類模板即DAO的實現類進行相應的改進,實現merge()和find()方法。
(3)在相應的DAOTest類模板中添加testMerge()和testFind()方法。
(4)在manager類模板中添加add方法,主要是在添加一個新對象時需要先判斷是否有重復,所以應該與save方法分開。
(5)改進DaoHibernate.xdt文件,原模板文件中的get()只適用于對象的主標示的類型為java.Long.*中的情況,修改模板后使之也適用于long和int的情形。
(6)修改Manager.xdt,去掉了用不到的import語句。
(7)在ManagerImpl.xdt文件中添加 import .service.Manager;在改進DaoHibernate.xdt文件后應該相應的修改ManagerImpl.xdt中的remove()和get()方法。
(8)DaoTest.xdt,添加自己的BaseTestCase,然后修改DaoTest.xdt使所有的DaoTest類繼承BaseTestCase。修改testAdd()中“verify a primary key was assigned”的語句,使其也適用于pirmary key是long 和int 的情形。
(9)ManagerTest.xdt,修改模板使ManagerTest類都繼承MockObjectTestCase,修改模板文件中get()和remove()方法,使之也適用于pirmary key是long 和int 的情形。
(10)去掉了Appfuse框架中context-hibernate.xdt和context-service.xdt模板文件。通過在DaoHibernate.xdt和ManagerImpl.xdt模板文件中添加相應的XDoclet標簽(@spring),利用xdoclet.modules.spring.SpringDocletTask任務可以自動生成spring的配置文件,省去了人工維護。
通過以上的修改和改進,使得這些模板功能更加強大,更符合我們的編程習慣從而更加實用。其中都是對原有模板文件比較大的改進,在一定程度上比Appfuse中的原有模塊更能提高開發效率。
3.3 代碼自動生成模塊的應用步驟
應用該模塊的步驟如下:
(1)在build.xml中設置項目的程序包、源文件目錄、生成文件的輸出目錄、XDoclet模板文件放置目錄、輸出的Form文件目錄、輸出的測試類文件目錄等一系列變量。
(2)設置各個庫的引用路徑,如Spring,Hibernate的jar文件 的引用。
(3)運行build.xml中的create-dir任務,創建工程詳細目錄。
(4)編寫領域對象類,類文件中要添加詳細的XDoclet標簽;在關系數據庫中建立一個空數據庫文件。
(5)順序執行Ant任務generate-hbm,schemaexport,gen-forms,gen-forms,gen,move-gens,gen-springxml,可以自動的連續執行也可以單步執行。
通過執行以上一系列任務,就會在相應的目錄下自動生成Hibernate配置文件,相應領域對象的Struts Form文件以及在Struts-config.xml中的相關配置,領域對象對應的Dao接口及Hibernate實現類,領域對象對應的Manager接口及簡單實現類,相應DaoTest類和ManagerTest類文件,還有簡單的Spring配置文件。此外,還在已創建的數據庫中產生與領域對象對應的數據表。
3.4 改進后模塊的優勢
這樣在整個架構中,一旦實現領域對象層,以下內容會自動實現:(1)基于Hibernate的對象關系映射層。(2)基于Hibernate的數據持久層。(3)基于Spring的業務層的部分代碼,即Manager接口和Manager實現。對于Manager實現還需要根據不同的業務作相應的修改。(4)基于Struts的表現層的部分代碼,即在應用中可能會用到的Struts中的Form類,對應每一個領域對象先自動生成一個Form,以節省可能的工作量。此外,針對數據持久層和業務層接口的測試用例也會自動生成,大部分可以直接應用,只有小部分需要稍作修改以增強測試效果。
4 基于SSH架構的代碼自動生成模塊在權限管理系統的應用
4.1 RBAC模型
本權限管理系統基于RBAC模型設計。RBAC(Role-Based Access Control)模型的基本思想就是根據安全策略劃分出不同的角色,資源訪問許可被封裝在角色中,用戶被指派到角色,用戶通過角色間接地訪問資源。RBAC 的最大優點在于它能夠靈活表達和實現組織的安全策略,使管理員從訪問控制底層的具體實現機制中脫離出來,十分接近日常的組織管理規則。RBAC 被認為是一種更普遍適用的訪問控制模型,可以有效地表達和鞏固特定事務的安全策略,有效緩解傳統安全管理處理瓶頸問題。其中RBAC96模型如圖1所示。
4.2參照RBAC模型以及實際需求對權限管理系統進行建模
此權限管理系統把權限管理和組織機構管理結合起來,分配給用戶的角色來自于部門,部門和角色之間是一對多的關系。權限許可是針對某一權限資源對象和權限操作,所以權限許可和權限資源對象以及權限操作都是一對一的關系。通過Borland公司的建模工具Together,將權限管理系統模型建立如下:
4.3 利用代碼自動生成模塊進行開發
按照3.3所討論的步驟,先進行(1)到(3)步。然后根據圖2中的模型,開始編寫領域對象層代碼并在代碼中添加XDoclet標簽。再依次執行第(4)、(5)步后,就會在相應的目錄下自動生成了Hibernate配置文件,User等領域對象的Struts Form文件以及在Struts-config.xml中的相關配置,對應的Dao接口及Hibernate實現類,對應的Manager接口及簡單實現類,相應DaoTest類和ManagerTest類文件,還有簡單的Spring配置文件。此外,還在已創建的數據庫中產生與領域對象對應的數據表。在該系統開發完畢后,將利用該模塊自動生成的代碼與已經完成的代碼進行了比較,經估算可以節省近40%的代碼量,于是就節省出了大量的時間用于核心業務邏輯的處理。
5 總結
改進后的自動化模塊可以在相對穩定的對象關系映射層和數據持久層實現完全的自動化,而在業務層和表現層也可以減少一部分代碼量,并且測試方面的代碼量也會大大減少。 所以,在類似基于Struts,Hibernate,Spring的輕量級J2EE架構的系統的開發中應用該自動化模塊會大大提高工作效率,縮短項目周期,提高對需求變化的快速響應速度。
參考文獻:
[1] Rod Johnson.J2EE Development Frameworks[J].Computer,2005(01)107-110.
[2] 汪厚祥,李卉.基于角色的訪問控制研究[J].計算機應用研究,2005(4):125-127.
篇10
關鍵詞:SSH開源框架技術;檔案管理系統;分布式檔案管理
隨著高校檔案管理的復雜化和網絡技術的發展,基于Web的檔案管理系統具有很大的使用價值。研究檔案管理系統軟件,提出其設計開發標準的規范化建議,是為了促進檔案系統軟件開發設計的規范化與標準化,避免盲目設計與開發,節省研制成本,減少經濟損失,擴大軟件適用規模,達到檔案管理的自動化、統一化,提高檔案工作效率,保證檔案管理安全性、通用性、可靠性,進而促進檔案信息化的發展。
一、架構技術分析
1.Struts簡介
Struts是一個為開發基于模型(Model)-視圖(View)-控制器(Controller)(MVC)模式的應用架構的開源框架,是利用Java Servlet和JSP構建Web應用的一項非常有用的技術。
2.Hibernate
Hibernate是一個免費的開源Java包,它使得與關系數據庫打交道變得十分輕松,同時不必考慮如何把它們從神秘的數據庫表中取出(或放回到數據庫表中)。
3.Spring
Spring是一個開源框架,它由Rod Johnson創建。它是為了解決企業應用開發的復雜性而創建的。Spring使用基本的JavaBean來完成以前只可能由EJB完成的事情。
4.SSH整合后的特點
(1)大大降低了開發成本。SSH 的架構是基于Struts、Spring和 Hibernate開源框架開發設計的,所以它在技術成本上會很低,又由于應用框架技術可以更清晰的劃分開發過程中每個人的工作任務,從而降低了人力成本。
(2)低耦合,增強了系統的可擴張性。對于傳統的ASP和PHP等腳本站點技術,將整個站點的業務邏輯和表現邏輯都混雜在ASP和PHP頁面里,從而導致頁面的可讀性相當差,可維護性非常低。即使需要簡單改變頁面的按鈕,也不得不打開頁面文件,冒著破壞系統的風險,因而具有良好的可擴展性。
(3)縮短項目的開發周期。使用框架技術可以避免反復開發的問題。無形中減少了開發過程中的編寫代碼量,提高了開發速度,縮短開發周期。
(4)重用性。為了避免重復開發,降低成本,我們希望能夠重用以前的代碼和設計。重用是我們不斷追求的目標之一,但事實上,做到這一點不是很容易。
二、系統功能需求
于檔案管理管理系統來說,總體上的目標就是提高檔案管理的效率,將大量復雜的統計,重復的事務性操作等交給系統自動處理,在提高效率的同時,也減少了人工的投入和人工操作可能產生的錯誤。本系統的開發依據J2EE分層的系統框架,提出基于SSH(Struts+Spring+Hibernate)集成框架的檔案管理系統的設計與實現。基于SSH的檔案管理系統開發要實現的具體功能如下圖所示。
三、系統實現
1.Web應用層實現
表示層主要包括系統和用戶交互的頁面,它的主要功能是收集用戶的輸入、驗證和轉換輸入數據,并把轉換后的數據傳遞給業務邏輯層。另外,表示層還發揮呈現數據、控制頁面導航,以及處理國際化編程的功能。該層使用Struts框架來實現,Struts為基于Java的應用提供一種用戶界面開發框架以及應用邏輯和業務邏輯的連接。它通過一個控制器ActionServlet提供Web應用程序生命周期管理,而且能夠在服務器上處理客戶端事件、輸入驗證等用戶界面問題。
應用層Struts的設計主要包括用戶Struts界面以及與之協作的事件Action的設計。檔案管理系統設計的Action主要有:LoginAction、MenuAction、OrgAction、ParaAction、RoleAction、UserAction、DoucumentInfoAction、BorrowInfoAction
2.業務邏輯層實現
業務邏輯層使用Spring框架來實現業務邏輯處理,可以實現與各種框架良好的集成。同時Spring的IOC的依賴注入功能給開發人員減輕了負擔,使程序代碼邏輯結構清晰,實現組件間的松散耦合,加快開發進度。業務邏輯層主要定義與應用層組件事件關聯的類和接口,用于向上層提供處理事件的服務,主要包括表示事件域處理方法的Service接口和Service實現類。
由于系統中的DAO對象緊密關聯,因此采用Facade模式將DAO對象封裝起來,應用層在使用業務邏輯層的服務時,僅僅與業務邏輯的Service接口發生聯系,無需知道業務服務組件的具體實現,也無需了解底層的DAO對象。
3.持久層實現
數據持久層使用Hibernate持久化框架,也是使用接口與實現分開的方式。這樣可以在持久層使用多種持久化技術。持久層主要定義應用程序通過具體的類與數據庫交互。遵循系統架構圖,持久層的設計將使用 Facade模式定義系統中各個模塊的業務入口Facade接口,并定義它的實現類Impl,通過接口得到具體業務的DAO實現。通過DAO和對應模式的Domain Object,就能對數據庫進行增刪查改動作。
4.數據庫設計
系統數據庫的設計實現,對系統的應用具有很重要的意義。根據檔案管理系統的實際數據量考慮,采用了Mysql數據庫。Mysql是一個精巧的SQL數據庫管理系統,以操作簡便著稱。由于其強大的功能、豐富的應用編程接口以及精巧的系統結構設計,在基于數據庫的應用軟件開發總得到了廣泛的應用。
作為一個數據庫管理系統,MySQL是客戶機/服務器模式的分布式系統,由SQL服務器、客戶端、管理工具和應用編程接口等一整套工具組成。它的平臺無關性優點使其能在多個操作系統上運行。此外,MySQL還是多線程的,不僅具有運行速度快,可處理大批量數據等特點,還支持多CPU使用。
檔案管理系統共建立了7張數據表:t_user(用戶表)、t_channel(菜單表)、t_news(新聞表)、t_org(機構信息表)、t_para(參數信息表)、t_info(檔案信息表)、t_borrow(檔案借閱信息表)。
四、結束語
本文采用了基于Java平臺的多層架構,通過運用Struts技術,Spring技術,Hibernate技術,建立一套可伸縮性高的系統開發架構。同時,由于接口的采用,使系統可以很好地滿足與其它系統集成的需要,使利用計算機系統和網絡服務系統的檔案管理更加方便。 ■
參考文獻
[1] 孫更新,周峰.Struts框架結構的Java Web開發技術基礎與實踐教程[M].北京:電子工業出版社.2008