freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

word版可編輯-bs架構(gòu)的oa系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)精心整理doc-資料下載頁(yè)

2025-07-15 11:32本頁(yè)面
  

【正文】 =\../images/\ width=\10\ height=\10\ border=\0\)。 (/a)。 } (])。 return ()。 }},所以也將其進(jìn)行了抽象,形成公共的數(shù)據(jù)訪問(wèn)層類(lèi)。以下是代碼部分:package 。import 。import 。import 。import 。import 。import 。import 。@SuppressWarnings(unchecked)public abstract class BaseDAOT extends HibernateDaoSupport{ protected void removeObj(ClassT c, Long id) { T obj = (T) ().get(c, id)。 ().delete(obj)。 } protected void removeObjs(ClassT c, ListLong ids) { for(Long id : ids) { (c, id)。 } } protected void updateObj(T obj) { ().saveOrUpdate(obj)。 } protected void updateObjs(ListT objs) { ().saveOrUpdateAll(objs)。 } protected T retrieveObj(ClassT c, Long id) { return (T) ().get(c, id)。 } protected ListT retrieveObjs(String queryString) { return (ListT) ().find(queryString)。 } protected ListT retrieveObjs(String queryString, String... value) { return (ListT) ().find(queryString, value)。 } protected ListT retrieveObjs(final String queryString, final String[] value, final int start, final int number) { return ().executeFind(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException, SQLException { Query query = (queryString)。 for (int i = 0。 i 。 ++i) { query = (i, value[i])。 } (start)。 (number)。 return (ListT) ()。 } })。 } protected ListT retrieveObjs(final String queryString, final String value, final int start, final int number) { String values[] = { value }。 return (queryString, values, start, number)。 } protected T retrieveObj(String queryString, String... value) { ListT objects = (queryString, value)。 if (null != objects) { if (0 == ()) { return null。 } else { return (0)。 } } else { return null。 } } protected T retrieveObj(String queryString) { return (T)().find(queryString)。 } protected void storeObj(T obj) { ().saveOrUpdate(obj)。 } protected void storeObjs(ListT objs) { ().saveOrUpdateAll(objs)。 } protected long retrieveObjsCount(final String queryString, final String... value) { Object count = ().execute( new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException, SQLException { Query query = (select count(*) + queryString)。 for (int i = 0。 i 。 ++i) { query = (i, value[i])。 } return ().next()。 } })。 return (Long) count。 } protected long retrieveObjsCount(String queryString) { String[] value = new String[0]。 return (queryString, value)。 }}5系統(tǒng)實(shí)現(xiàn) 系統(tǒng)架構(gòu)本系統(tǒng)以Struts2++,按照實(shí)際的開(kāi)發(fā)流程來(lái)進(jìn)行開(kāi)發(fā)。包括如下:l Hibernate功能開(kāi)發(fā):包括創(chuàng)建Hibernate的持久化類(lèi)、映射文件,開(kāi)發(fā)DAO類(lèi);l Struts功能開(kāi)發(fā):開(kāi)發(fā)Form Bean類(lèi)、Action類(lèi)、JSP頁(yè)面并進(jìn)行頁(yè)面的國(guó)際化、表單的校驗(yàn),調(diào)用Hibernate層的DAO類(lèi)執(zhí)行與數(shù)據(jù)庫(kù)的交互;l Spring功能開(kāi)發(fā):,并在其中進(jìn)行基礎(chǔ)的Bean組件配置,包括:數(shù)據(jù)源配置、SessionFactory的配置、配置事務(wù)、配置DAO組件以及配置DAO事務(wù);l 系統(tǒng)功能提升:包括開(kāi)發(fā)分頁(yè)欄通用模塊、可擴(kuò)展性、系統(tǒng)安全訪問(wèn)等。 系統(tǒng)架構(gòu)圖該系統(tǒng)架構(gòu)圖如圖51所示:圖51系統(tǒng)架構(gòu)圖 程序結(jié)構(gòu)圖本系統(tǒng)源程序包的目錄結(jié)構(gòu)如圖42所示。OA為項(xiàng)目的名稱(chēng),也是項(xiàng)目的根目錄。WebRoot為Web目錄,包括圖片目錄images和JSP文件。WEBINF目錄、。Src目錄包含如下幾個(gè)部分:l :Hibernate持久類(lèi)與映射文件存放目錄;l :Hibernate DAO數(shù)據(jù)訪問(wèn)層存放目錄;l :業(yè)務(wù)邏輯層存放目錄;l .*:Action顯示層存放目錄;l dbconfig:資源文件存放目錄;l :公共類(lèi)存放目錄。l .* :ant自動(dòng)代碼生成器存放目錄在src目錄下還保存了Log4j的屬性文件。圖52程序結(jié)構(gòu)圖 持久層Hibernate實(shí)現(xiàn) 創(chuàng)建并配置Hibernate映射文件在進(jìn)行struts層的功能開(kāi)發(fā)之前,我們需要基于Hibernate開(kāi)發(fā)底層的DAO層。我們將分2個(gè)步驟進(jìn)行開(kāi)發(fā)。l 創(chuàng)建Hibernate的持久化類(lèi)和映射文件,并將其交給spring管理;l 開(kāi)發(fā)并配置Hibernate DAO層:;;;;;;。這是Hibernate層開(kāi)發(fā)的第一步,使用MyEclipse的工具Database Explorer來(lái)自動(dòng)創(chuàng)建Hibernate的持久化類(lèi)和映射文件,對(duì)應(yīng)的數(shù)據(jù)庫(kù)分別為documentCatalog、documentItem、task、board、topic、post、mail以及user表。 開(kāi)發(fā)并配置Hibernate DAO層到目前為止,系統(tǒng)已經(jīng)具備了Hibernate的基礎(chǔ)訪問(wèn)功能,下面我們要開(kāi)發(fā)Hibernate DAO層,使用HibernateTemplate實(shí)現(xiàn)對(duì)數(shù)據(jù)表的增、刪、改、查的操作, 。 控制層Struts實(shí)現(xiàn) 開(kāi)發(fā)Struts核心流程代碼在以上經(jīng)過(guò)對(duì)Hibernate持久化類(lèi)、映射文件和DAO類(lèi)的開(kāi)發(fā),已經(jīng)具備了數(shù)據(jù)層的功能代碼,下面我們就要開(kāi)發(fā)Struts層的代碼,來(lái)調(diào)用該數(shù)據(jù)層實(shí)現(xiàn)數(shù)據(jù)庫(kù)的操作。要進(jìn)行Struts層的功能開(kāi)發(fā),然后再交給spring管理即可。 業(yè)務(wù)層Spring實(shí)現(xiàn)Spring提供的HibernateTemplate是對(duì)Hibernate功能的封裝,通過(guò)封裝的代碼實(shí)現(xiàn)Spring IoC容器的有機(jī)結(jié)合。要使用HibernateTemplate進(jìn)行開(kāi)發(fā),需要在Bean配置文件中添加一系列的組件,這些組件相互注入。由此,我們共需要配置如下的8個(gè)Bean組件。l dataSource:為sessionFactory提供數(shù)據(jù)源;l sessionFactory:Hibernate管理工廠,為DAO為的事務(wù)管理策略對(duì)象transactionManager提供SessionFactory;l transactionManager:為DAO類(lèi)的事務(wù)管理策略對(duì)象DAOProxy提供事務(wù)管理器對(duì)象;l DAO類(lèi):為DAO提供POJO類(lèi);利用被注入的數(shù)據(jù)源,定義一系列的業(yè)務(wù)操作函數(shù),使用JdbcTemplate來(lái)操作POJO類(lèi),實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的操作;l DAOProxy:DAO的事務(wù)管理策略對(duì)象,該對(duì)象規(guī)定了DAO的管理策略,因此它需要注入DAO作為被管理的對(duì)象。進(jìn)行事務(wù)管理也需要提供事務(wù)管理器,因此也需要注入transactionManager作為事務(wù)管理器;l Action類(lèi):該類(lèi)是響應(yīng)處理類(lèi),負(fù)責(zé)調(diào)用DAO函數(shù)即可實(shí)現(xiàn)數(shù)據(jù)庫(kù)的訪問(wèn),而對(duì)于DAO的訪問(wèn)都將在DAOProxy的監(jiān)管之下。這些Bean組件的注入過(guò)程如圖44所示:圖53 Bean注入過(guò)程圖 數(shù)據(jù)源配置開(kāi)發(fā)數(shù)據(jù)庫(kù)代碼的第一步,就是配置與數(shù)據(jù)的連接。配置的過(guò)程很簡(jiǎn)單,Bean,指向的類(lèi)為DBCP的數(shù)據(jù)源類(lèi),并指定4個(gè)數(shù)據(jù)參數(shù)。l driverClassName:指定數(shù)據(jù)庫(kù)連接的驅(qū)動(dòng):;l url:;l username:指定訪問(wèn)數(shù)據(jù)庫(kù)的用戶名scottl password:指定訪問(wèn)數(shù)據(jù)庫(kù)的密碼:oracleadmin。 配置SessionFactory配置SessionFactory對(duì)象,為DAO層提供Hibernate的數(shù)據(jù)庫(kù)連接對(duì)象。其中需要注入上面配置的dataSource對(duì)象。 配置事務(wù)為SessionFactory對(duì)象增加事務(wù)配置事件,并注入上面配置的SessionFactory對(duì)象。 配置DAO組件在這里我們先對(duì)上面開(kāi)發(fā)的基于HibernateTemplate的DAO類(lèi)配置Bean對(duì)象,并為該對(duì)象注入SessionFactory對(duì)象。 配置DAO事務(wù)為上面配置的DAO對(duì)象配置事務(wù)組件,使得對(duì)DAO類(lèi)的訪問(wèn)都在Spring的事務(wù)監(jiān)管之下。該組件需要注入上面配置的事務(wù)對(duì)象transactionManager、DAO對(duì)象,并配置事務(wù)管理的策略。6 界面設(shè)計(jì) 文檔管理模塊本系統(tǒng)界面簡(jiǎn)潔,采用天藍(lán)搭檔灰白顏色,給人感覺(jué)一目了然:上邊欄目,左側(cè)菜單,中間內(nèi)容。以下是系統(tǒng)文檔模塊的部分截圖:圖61(文檔列表模塊)圖62(文檔上傳模塊)63(文檔條目列表模塊) 項(xiàng)目管理模塊 該模塊采用flex技術(shù),極富有渲染力,給人舒服、動(dòng)感、實(shí)用、方便的感覺(jué)。以下是部分截圖:圖64(項(xiàng)目管理模塊) 論壇管理模塊論壇采用類(lèi)似學(xué)校呈現(xiàn)方式,實(shí)現(xiàn)論壇應(yīng)該有的功能。下面是論壇的部分截圖: 圖65(論壇板塊)圖66(論壇主題)圖67(論壇回帖) 郵件管理模塊郵件實(shí)現(xiàn)公司內(nèi)部郵件的相互轉(zhuǎn)發(fā),與我們互聯(lián)網(wǎng)上普通的郵件平臺(tái)幾乎一樣。以下是郵件的部分截圖:圖68(收件箱)圖69(寫(xiě)信)7 軟件測(cè)試 測(cè)試計(jì)劃Java語(yǔ)言是一種支持面向?qū)ο蟮恼Z(yǔ)言,通常情況下,我們可以將程序的一個(gè)單元看成一個(gè)獨(dú)立的類(lèi)。因此進(jìn)行單元測(cè)試的重點(diǎn)就是針對(duì)這些類(lèi)進(jìn)行測(cè)試。最佳的方法就是測(cè)試類(lèi)中定義的方法。如果父類(lèi)為抽象類(lèi),為進(jìn)行測(cè)試可以簡(jiǎn)單定義一個(gè)具體子類(lèi),它只利用父類(lèi)的抽象方法,而無(wú)其他行為。然而,這樣做可能會(huì)忽略建立的子類(lèi)將隨著父類(lèi)結(jié)構(gòu)變化而變化,以及編譯器或者其他測(cè)試過(guò)程中不能捕獲的信息,從而導(dǎo)致一些遺漏,我們需要遵循一些基本的原則來(lái)進(jìn)行測(cè)試:l 不需要測(cè)試get和set這樣的行為;l 一個(gè)方法至少要測(cè)試一次;l 各種訪問(wèn)、修改器也對(duì)測(cè)試產(chǎn)生影響。 測(cè)試用例測(cè)試說(shuō)明:系統(tǒng)非常重視測(cè)試環(huán)節(jié),對(duì)核心的模塊進(jìn)行單元測(cè)試與集成測(cè)試,下面是部分測(cè)試代碼:import 。import 。import 。import 。import 。import 。public class DocumentItemServiceImplTest { private static Documen
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1