【正文】
52所示。用戶注冊、用戶登錄、修改個人注冊信息組合成注冊登錄模塊;用戶瀏覽版塊、瀏覽主題文章列表、查看文章組合成瀏覽模塊;用戶發(fā)表文章、回復(fù)、編輯自己發(fā)表的文章組合成文章發(fā)表及回復(fù)模塊;管理員編輯文章、刪除文章、轉(zhuǎn)移文章、置頂文章、指定精華文章組合成文章管理模塊。例如,注冊用戶具有文章瀏覽、發(fā)表、回復(fù)的權(quán)限,那么他就能使用ICPS系統(tǒng)的瀏覽、發(fā)表、回復(fù)的功能。 private String boardName。在XML配置文件中分別用屬性onetomany和manytoone表示這種關(guān)聯(lián)關(guān)系。 public Object getByPk(Class clazz,Integer id)。 public List find(String queryString, Object param) throws DaoException。} DAO數(shù)據(jù)訪問實現(xiàn)為了實現(xiàn)代碼的最大復(fù)用和便于以后功能的變更,業(yè)務(wù)對象DAO都繼承自BaseDAO。u getQuery()方法提供給調(diào)用者一個Query對象,它需要調(diào)用者傳入一個SQL語句的字符串作為參數(shù)。根據(jù)需要,id可以是Integer型對象、Long型對象或String,所以有三種實現(xiàn)方式,分別是getByPk(Class class,Integer id),getByPk(Class class,Long id)和getByPk(Class class,Long String)。接下來我們以BoardsDAO的實現(xiàn)來說明如何實現(xiàn)一個具體業(yè)務(wù)對象DAO。本系統(tǒng)涉及到的業(yè)務(wù)邏輯類是由系統(tǒng)的業(yè)務(wù)對象決定的。④ IAdvService和AdvService提供廣告管理相關(guān)服務(wù)。? IOnlineStatService和OnlineStatService提供在線統(tǒng)計服務(wù)。BoardsService主要負責(zé)提供二級版區(qū)的管理和權(quán)限控制等服務(wù)。這也是使用Hibernate實現(xiàn)持久層得優(yōu)勢所在。 業(yè)務(wù)對象DAO封裝了Hibernate的實現(xiàn)細節(jié),提供訪問接口,供業(yè)務(wù)層調(diào)用。u 根據(jù)主鍵查詢唯一數(shù)據(jù)對象,用getByPk()方法實現(xiàn)。這個方法是通過SessionFactoryUtils 類來獲取Session實例的。 public short getNextOrders(Board board)。 public void deleteAll(Collection entities) throws DaoException。public interface IBaseDao { public Session openSession()。在應(yīng)用運行時,Hibernate將根據(jù)這個映射文件來生成各種SQL語句,實現(xiàn)數(shù)據(jù)的訪問。業(yè)務(wù)對象類其實就是普通的java類,在其內(nèi)部定義一些和業(yè)務(wù)相關(guān)的私有屬性字段,并對外提供公有的相應(yīng)屬性的set和get方法設(shè)置或訪問其屬性值。聯(lián)系各個模塊的主線是使用者的權(quán)限,用戶能夠使用系統(tǒng)的哪些功能是由用戶權(quán)限決定的。表54 ICPS_VOTEITEM字段名類型(寬度) 關(guān)鍵字 是否非空 字段含義IDbigint(13)Y Y唯一標識符VoteIDbigint(13) Y投票IDItem varchar(100) Y項目名稱ItemValueint(11) Y項目投票數(shù) 模塊設(shè)計,ICPS系統(tǒng)功能分為用戶使用的基本功能和管理員對系統(tǒng)進行管理的功能兩類,因此模塊設(shè)計也分為兩大類。圖51 系統(tǒng)架構(gòu)層次圖 數(shù)據(jù)庫設(shè)計ICPS系統(tǒng)開發(fā)的總的任務(wù)是方便用戶進行信息交流。l 域模塊層:該層應(yīng)該說是ORM思想的產(chǎn)物,ORM用對象關(guān)聯(lián)數(shù)據(jù)表,允許數(shù)據(jù)表中數(shù)據(jù)放入對象,也允許對象中數(shù)據(jù)更新到數(shù)據(jù)表,我們將這些對象的集合歸為一個專門的層次即Domain Layer。Struts主要在這一層負責(zé)為用戶管理請求和響應(yīng);提供ActionFrom來封裝與用戶互動的數(shù)據(jù)元素;提供控制器(controller)代理調(diào)用業(yè)務(wù)邏輯;處理從其他層拋出的Struts Action異常;l 業(yè)務(wù)層:具體的業(yè)務(wù)邏輯通常導(dǎo)致代碼的高度耦合,因此我們將業(yè)務(wù)邏輯分為單獨的一層,其目的也是希望通過該層,來降低它與系統(tǒng)其他部分的耦合度。可重用性指的是應(yīng)用程序代碼沒有冗余,同一個應(yīng)用程序能滿足多種需求。② 提高了軟件的可維護性。l 設(shè)置參數(shù):提供一些初始化信息的設(shè)置功能 框架設(shè)計 接下來我們所要做的就是對整個系統(tǒng)進行邏輯分層,已便于系統(tǒng)的開發(fā)、維護以及后續(xù)新的功能的擴充?;谏鲜龇治?,本系統(tǒng)需要完成以下具體任務(wù):l 會員注冊:提供新會員注冊功能,包括提供錄入信息的界面,檢查注冊信息的有效性,并將注冊會員信息保存在在對應(yīng)數(shù)據(jù)庫的表中。對于開發(fā)一個ICPS系統(tǒng),首先需要確定它能提供那些功能。通過IntroductionInterceptor可以實現(xiàn)多線程訪問中的類鎖定。 } Invoke()方法的MethodInvocation 參數(shù)暴露將被調(diào)用的方法、目標連接點、AOP代理和傳遞被調(diào)用方法的參數(shù)。Before處理邏輯可被用于任何類型的切入點。Spring AOP只實現(xiàn)了方法級的連接點。l Throw:在連接點拋出異常時進行異常處理。各切面只需集中于自己領(lǐng)域內(nèi)的邏輯實現(xiàn)。為加強BeanFactory及其實現(xiàn)提供的功能,Spring框架引入了ApplicationContext接口。u BeanFactoryBeanFactory主要負責(zé)創(chuàng)建并維護Bean實例。IoC的實現(xiàn)模式有三種:Type1 接口注入、Type2 設(shè)值注入、Type3 構(gòu)造子注入。Web 模塊還簡化了處理多部分請求以及將請求參數(shù)綁定到域?qū)ο蟮墓ぷ?。異常層次結(jié)構(gòu)簡化了錯誤處理,并且極大地降低了需要編寫的異常代碼數(shù)量(例如打開和關(guān)閉連接)。② Spring 上下文(Context)模塊:直接位于Spring核心模塊之上。 Spring框架概述Spring框架是一個分層的Java/J2EE應(yīng)用程序框架,基于Expert OneonOne J2EE設(shè)計和發(fā)行的代碼。④QBC檢索方式。②標識符檢索方式。u Query和Criteria接口Query和Criteria接口是Hibernate的查詢接口,用于向數(shù)據(jù)庫查詢對象,以及控制執(zhí)行查詢的過程。如果應(yīng)用程序只訪問一個數(shù)據(jù)庫,只需要在應(yīng)用初始化的時候創(chuàng)建一個會話工廠實例。Hibernate可以檢測到這個工作單元中對象的改變。圖33是這5個核心接口的類框圖。圖32 ORM充當(dāng)業(yè)務(wù)邏輯層和數(shù)據(jù)庫層之間充當(dāng)橋梁ORM解決的主要問題就是對象關(guān)系的映射。 Hibernate概述 Hibernate是一種適合于Java語言的對象關(guān)系映射(ORM)解決方案。Struts架構(gòu)將檢查UserActionForm是否存在,如果不存在,就會創(chuàng)建一個該類的實例。u Struts ActionForm Bean在Struts架構(gòu)中,使用一種名為ActionForm的系統(tǒng)狀態(tài)Bean,來實現(xiàn)應(yīng)用系統(tǒng)的非持久性數(shù)據(jù)儲存和維護功能。這樣的分離,使得客戶請求和Action類之間可以有多個點對點的映射。這幾個組件就是:ActionServlet,Action Classes,Action Mapping(包括ActionForward),ActionFrom Bean。 圖23 JSP Model 2Model 2實現(xiàn)了系統(tǒng)業(yè)務(wù)邏輯功能模塊、顯示模塊和數(shù)據(jù)持久層處理模塊的分離,同時還提高了應(yīng)用系統(tǒng)的可維護性、可擴展性、可移植性和組件的可復(fù)用性。最初很多的Java Web應(yīng)用甚至全部由JSP頁面構(gòu)成,這種以JSP為中心的開發(fā)模型被稱為Model 1。即與用戶實現(xiàn)交互的界面,是應(yīng)用程序的外在表現(xiàn),通常實現(xiàn)數(shù)據(jù)的輸入和輸出功能。并驗證了所設(shè)計實現(xiàn)方法的正確性。 第二章介紹了MVC設(shè)計模式及基于MVC模式的Struts框架。Hibernate 是一項新興的 ORM 技術(shù),它把普通 java 對象映射到關(guān)系數(shù)據(jù)庫表,并提供對對象的持久化操作。比如信息交流平臺提供的信息布告區(qū)可為企業(yè)發(fā)布它的產(chǎn)品介紹、推廣、宣傳、服務(wù)等信息,能把企業(yè)的新產(chǎn)品快速的推向市場。 for our business layer we will use Spring。其實,就算用Java建造一個不是很煩瑣的web應(yīng)用程序,也不是件輕松的事情。而開發(fā)這樣一個信息交流平臺,正是本論文要著手處理的問題。關(guān)鍵詞:J2EE Struts Hibernate Spring 模式 框架Abstract With the rapid development of network technology and the wide use of J2EE platform, the multilayer web structure base on B/S has developed gradually. WEB technique’s development has promoted the development of informationization, it has made people can municate and share information without area and space limitation. However, developing such kind of information munication platform is just the case in this thesis.Building nontrivial web applications with Java is no trivial task. There are many things to consider when structuring architecture to house an application. From a highlevel, developers are faced with decisions about how they are going to construct user interfaces, where the business logic will reside, and how to persist application data. Each of these three layers has their own questions to be answered. What technologies should be implemented across each layer? How can the application be designed so that it is loosely coupled and flexible to change? Does the architecture allow layers to be replaced without affecting other layers? How will the application handle container level services such as transactions? This thesis is just base on these questions, taking an information munication platform system development as background, based on MVC architecture, discussed Struts frame, Hibernator’s ORM mechanism, persistent management of persistent object and Spring IoC technique and bining frameworks using three popular open source frameworks: For the presentation layer we will use Struts。它在新興的電子文化、信息咨詢和商業(yè)服務(wù)領(lǐng)域也勢必蘊藏巨大的市場。采用Struts可以簡化遵循MVC設(shè)計模式的Web應(yīng)用的開發(fā)工作,很好的實現(xiàn)代碼重用,使開發(fā)人員從繁瑣的工作中解脫出來,快速開發(fā)具有強可擴展性的Web應(yīng)用,大大簡化開發(fā)過程,縮短開發(fā)周期,提高開發(fā)效率。 論文的章節(jié)安排 第一章引言部分對本文所要研究課題的研究目的及意義作了簡要的闡述,說明了課題的研究內(nèi)容。 第六章利用第五章所設(shè)計的WEB應(yīng)用開發(fā)架構(gòu),實現(xiàn)了一個信息交流平臺系統(tǒng)。② 視圖(View):表示層。在JSP頁面中可以很容易的同時實現(xiàn)內(nèi)容的顯示、業(yè)務(wù)邏輯的編寫以及流程的控制,從而快速地完成應(yīng)用開發(fā)。由于引入了MVC設(shè)計模式,Model 2實際上是實現(xiàn)了基于組件的開發(fā),在整個軟件開發(fā)過程中實現(xiàn)了具體清晰的邏輯劃分,能夠有效的區(qū)分不同的角色,這就更適合于大規(guī)模系統(tǒng)的開發(fā)和管理。 Struts核心組件對于Struts 如何控制、處理客戶請求,讓我們通過對struts的四個核心組件介紹來具體說明。Action 類主要負責(zé)將客戶請求映射到處理這些請求的業(yè)務(wù)邏輯Bean,再轉(zhuǎn)向生成響應(yīng)回送給客戶端的頁面,實際上充當(dāng)?shù)氖荂ontroller和Model之間的一個適配器(Adaptor),其功能就是將請求與業(yè)務(wù)邏輯分開。ActionForward對象映射的是配置文件()中的forward元素,封裝了目標響應(yīng)頁面的URI。圖25 Struts請求響應(yīng)流程在控制器調(diào)用具體的Action的Execute方法之前,Act