畢業(yè)綜合實(shí)踐報(bào)告模板_第1頁(yè)
畢業(yè)綜合實(shí)踐報(bào)告模板_第2頁(yè)
畢業(yè)綜合實(shí)踐報(bào)告模板_第3頁(yè)
畢業(yè)綜合實(shí)踐報(bào)告模板_第4頁(yè)
畢業(yè)綜合實(shí)踐報(bào)告模板_第5頁(yè)
已閱讀5頁(yè),還剩12頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

畢業(yè)綜合實(shí)踐報(bào)告姓名:學(xué)號(hào):系部:專(zhuān)業(yè):軟件技術(shù)班級(jí):軟件1班指導(dǎo)教師:任小艷完成日期2011年6月5日畢業(yè)綜合實(shí)踐報(bào)告PAGE16

JAVABS開(kāi)發(fā)模式在銷(xiāo)售管理軟件上的運(yùn)用摘要本文分析了Browser/Client結(jié)構(gòu)的特點(diǎn),同時(shí)列舉了把B/S結(jié)構(gòu)應(yīng)用到銷(xiāo)售管理軟件上的的優(yōu)點(diǎn)。JSP作為流行的動(dòng)態(tài)網(wǎng)站開(kāi)發(fā)工具,很適合開(kāi)發(fā)導(dǎo)航系統(tǒng),可以完成數(shù)據(jù)更新的動(dòng)態(tài)操作。文中介紹了JSP的工作流程,運(yùn)用JSP開(kāi)發(fā)WEB應(yīng)用程序的關(guān)鍵技術(shù)和訪問(wèn)數(shù)據(jù)庫(kù)的方法。介紹了整個(gè)系統(tǒng)的設(shè)計(jì)規(guī)劃,系統(tǒng)結(jié)構(gòu)、數(shù)據(jù)庫(kù)設(shè)計(jì)時(shí)元數(shù)據(jù)的應(yīng)用、系統(tǒng)功能的分析以及系統(tǒng)各功能模塊的詳細(xì)設(shè)計(jì)和部分代碼。探討了用B/S模式有數(shù)據(jù)庫(kù)作后臺(tái)支持的原理和具體實(shí)踐,以及其相關(guān)的技術(shù)在整個(gè)J2EE系統(tǒng)中的發(fā)展歷程,開(kāi)發(fā)時(shí)所碰到的問(wèn)題,具體運(yùn)用的優(yōu)劣兩方面的內(nèi)容。關(guān)鍵詞:Browser/ClientJ2EE框架JSP引言實(shí)習(xí)崗位概況:我所實(shí)習(xí)的公司是位于浦東張江高科技園區(qū)的商策科技(上海)有限公司(SStrategiestechnologyCo.,Ltd.),這家公司從事銷(xiāo)售管理軟件(SFA)和客戶關(guān)系管理軟件的開(kāi)發(fā)和銷(xiāo)售,提供專(zhuān)業(yè)銷(xiāo)售管理培訓(xùn)、咨詢等服務(wù)。我在公司實(shí)習(xí)的崗位是Java軟件工程師,主要從事公司軟件開(kāi)發(fā)任務(wù)。課題簡(jiǎn)介:本報(bào)告探討了用JAVA開(kāi)發(fā)B/S模式有數(shù)據(jù)庫(kù)作后臺(tái)支持的銷(xiāo)售管理軟件的原理和具體實(shí)踐。本案例基于MVC模式,JSP作為表示層(V),Servlet作為控制器(C),Ejb+Hibernate作為模型層(M),所以就是以JSP+Servlet+Ejb+Hibernate三層模式來(lái)實(shí)現(xiàn)。任務(wù):在公司中我所從事的主要任務(wù)是在公司項(xiàng)目經(jīng)理的帶領(lǐng)下,根據(jù)公司軟件的需求,完成相應(yīng)項(xiàng)目的編程。正文本文的項(xiàng)目是基于B/S的開(kāi)發(fā),使用了JSP+Servlet+Ejb+Hibernate開(kāi)發(fā)模式,Hibernate進(jìn)行數(shù)據(jù)庫(kù)映射,EJB執(zhí)行數(shù)據(jù)庫(kù)操作,Servlet作為邏輯控制層,JSP作為最后給用戶的顯示層,中間還穿插運(yùn)用到了普通的JAVABEAN等技術(shù)。一、基于B/S結(jié)構(gòu)的數(shù)據(jù)庫(kù)訪問(wèn)模式 B/S結(jié)構(gòu),即Browser/Server(瀏覽器/服務(wù)器)結(jié)構(gòu),是隨著Internet技術(shù)的興起,對(duì)C/S結(jié)構(gòu)的一種變化或者改進(jìn)的結(jié)構(gòu)。在這種結(jié)構(gòu)下,用戶界面完全通過(guò)WWW瀏覽器實(shí)現(xiàn),一部分事務(wù)邏輯在前端實(shí)現(xiàn),但是主要事務(wù)邏輯在服務(wù)器端實(shí)現(xiàn),形成所謂3-tier結(jié)構(gòu)。B/S結(jié)構(gòu),主要是利用了不斷成熟的WWW瀏覽器技術(shù),結(jié)合瀏覽器的多種Script語(yǔ)言(VBScript、JavaScript…)和ActiveX技術(shù),用通用瀏覽器就實(shí)現(xiàn)了原來(lái)需要復(fù)雜專(zhuān)用軟件才能實(shí)現(xiàn)的強(qiáng)大功能,并節(jié)約了開(kāi)發(fā)成本,是一種全新的軟件系統(tǒng)構(gòu)造技術(shù)。隨著Windows98/Windows2000將瀏覽器技術(shù)植入操作系統(tǒng)內(nèi)部,這種結(jié)構(gòu)更成為當(dāng)今應(yīng)用軟件的首選體系結(jié)構(gòu)。顯然B/S結(jié)構(gòu)應(yīng)用程序相對(duì)于傳統(tǒng)的C/S結(jié)構(gòu)應(yīng)用程序?qū)⑹蔷薮蟮倪M(jìn)步。B/S結(jié)構(gòu)是真正的三層結(jié)構(gòu),它以訪問(wèn)WEB數(shù)據(jù)庫(kù)為中心,HTTP為傳輸協(xié)議,客戶端通過(guò)瀏覽器(Browser)訪問(wèn)WEB服務(wù)器和與其相連的后臺(tái)數(shù)據(jù)庫(kù),我們稱(chēng)之為B/S(Browser/Server)模式。其三級(jí)結(jié)構(gòu)組成如下圖所示:客戶端客戶端后臺(tái)數(shù)據(jù)庫(kù)WEB服務(wù)器客戶端客戶端后臺(tái)數(shù)據(jù)庫(kù)WEB服務(wù)器圖中從左到右,分為三個(gè)層次:第一層是客戶端即瀏覽器,主要完成客戶和后臺(tái)的交互及最終查詢結(jié)果的輸出功能。在客戶端向指定的Web服務(wù)器提出服務(wù)器請(qǐng)求,Web服務(wù)器用HTTP協(xié)議把所需文件資料傳給用戶,客戶端接受并顯示在WWW瀏覽器上;第二層Web服務(wù)器是功能層,完成客戶的應(yīng)用功能,即Web服務(wù)器接受客戶請(qǐng)求,并與后臺(tái)數(shù)據(jù)庫(kù)連接,進(jìn)行申請(qǐng)?zhí)幚?,然后將處理結(jié)果返回Web服務(wù)器,再傳至客戶端;第三層數(shù)據(jù)庫(kù)服務(wù)器是數(shù)據(jù)層。數(shù)據(jù)庫(kù)服務(wù)器應(yīng)客戶請(qǐng)求獨(dú)立地進(jìn)行各種處理。與傳統(tǒng)的C/S模式相比,B/S結(jié)構(gòu)把處理功能全部移植到了服務(wù)器端,用戶的請(qǐng)求通過(guò)瀏覽器發(fā)出,無(wú)論是使用和數(shù)據(jù)庫(kù)維護(hù)上都比傳統(tǒng)模式更加經(jīng)濟(jì)方便。而且使維護(hù)任務(wù)層次化:管理員負(fù)責(zé)服務(wù)器硬件日常管理和維護(hù),系統(tǒng)維護(hù)人員負(fù)責(zé)后臺(tái)數(shù)據(jù)庫(kù)數(shù)據(jù)更新維護(hù)。由以上的比較分析可知,三層結(jié)構(gòu)也可以理解為增加WEB服務(wù)器的C/S模式。二、實(shí)施技術(shù)框架結(jié)構(gòu)數(shù)據(jù)查詢數(shù)據(jù)查詢當(dāng)用戶查詢數(shù)據(jù)時(shí)首先通過(guò)頁(yè)面發(fā)出action然后調(diào)用ejb方法通過(guò)Hibernate進(jìn)行數(shù)據(jù)庫(kù)查詢,如圖一所示:圖一數(shù)據(jù)更新當(dāng)用戶進(jìn)行數(shù)據(jù)更新時(shí)首先通過(guò)頁(yè)面發(fā)出action然后調(diào)用ejb方法通過(guò)Hibernate進(jìn)行數(shù)據(jù)庫(kù)更新,如圖二所示:s圖二三、Hibernate介紹Hibernate介紹Hibernate初始化1.在Hibernate初次啟動(dòng)的時(shí)候,會(huì)從Hibernate.cfg.xml讀出所有mapping關(guān)聯(lián)表信息,一次性讀入內(nèi)存,以供以后使用2.調(diào)用Configuration類(lèi)的buildSessionFaction方法sessionFaction=config.buildSessionFactory();sessionFactory代表一個(gè)數(shù)據(jù)源,若只有一個(gè)數(shù)據(jù)源,則只需要?jiǎng)?chuàng)建該對(duì)象的一個(gè)實(shí)例,該對(duì)象不和Configuration關(guān)聯(lián),可以再修改Configuration對(duì)象包含的配置信息,不會(huì)對(duì)SessionFactory有任何的影響Hibernate的Session接口Hibernate初始化后,可以通過(guò)SessionFactory實(shí)例的openSession()方法獲得Session實(shí)例,然后通過(guò)它執(zhí)行訪問(wèn)數(shù)據(jù)庫(kù)的操作。save():把Java對(duì)象保存到數(shù)據(jù)庫(kù)中update():更新數(shù)據(jù)庫(kù)中的Java對(duì)象delete():把Java對(duì)象從數(shù)據(jù)庫(kù)中刪除load():從數(shù)據(jù)庫(kù)加載Java對(duì)象find():從數(shù)據(jù)庫(kù)查詢Java對(duì)象saveorupdate():hibernate自己判斷為save還是updateJava對(duì)象Session對(duì)象是一個(gè)輕量級(jí)對(duì)象,通常情況下將每一個(gè)Session實(shí)例和一個(gè)數(shù)據(jù)庫(kù)事務(wù)綁定;先根據(jù)項(xiàng)目實(shí)際情況,訂如下規(guī)則:對(duì)于對(duì)單表的更新操作,不要用事務(wù),只用session.flush();對(duì)于復(fù)雜的業(yè)務(wù)邏輯,即有多次更新,則用事務(wù)四、EJB技術(shù)重點(diǎn)介紹EJB的命名Remote接口:業(yè)務(wù)功能描述+SessionHome接口:業(yè)務(wù)功能描述+SessionHomeBean類(lèi):業(yè)務(wù)功能描述+SessionBeanEJBHome接口//申明JNDI上下文javax.naming.Contextcontext=newjavax.naming.InitialContext(); //通過(guò)JNDI查詢EJBHome接口UserAccountSessionHomeuserAccountSessionHome=(UserAccountSessionHome)context.lookup("UserAccountSession");//調(diào)用create()方法,返回EJBRemote接口UserAccountSessionuserAccountSession=userAccountSessionHome.create();EJBRemote接口和EJB實(shí)現(xiàn)類(lèi)必需注意:EJBRemote接口里面的方法必需要在EJB實(shí)現(xiàn)類(lèi)中有同名的實(shí)現(xiàn)方法!EJBRemote接口繼承EJBObject,只提供方法接口,供其它程序調(diào)用,封裝EJB實(shí)現(xiàn)方法,前端用戶不需要知道該方法是怎么實(shí)現(xiàn)的。EJB實(shí)現(xiàn)類(lèi)是一個(gè)封裝實(shí)現(xiàn)(必需實(shí)現(xiàn)SessionBean)類(lèi),封裝所有的業(yè)務(wù)邏輯,前端程序不能直接調(diào)用該實(shí)現(xiàn)類(lèi)。無(wú)狀態(tài)SessionBean在內(nèi)存中只有一份實(shí)例,可以被所有用戶共享使用。EJB配置描述EJB的標(biāo)準(zhǔn)配置描述:ejb-jar.xml在該配置描述中,描述了EJB的JNDIName、Home接口、Remote接口、EJB實(shí)現(xiàn)類(lèi),以及EJB的事務(wù)隔離級(jí)別和EJB的類(lèi)型EJB業(yè)務(wù)方法為了提高項(xiàng)目的可維護(hù)性,在寫(xiě)EJB業(yè)務(wù)方法時(shí),盡量做到方法與業(yè)務(wù)一對(duì)一的關(guān)系五、Action控制器/JSP技術(shù)重點(diǎn)介紹圖三控制器在MVC中擔(dān)當(dāng)非常重要的角色,它負(fù)責(zé)整個(gè)項(xiàng)目各種請(qǐng)求的調(diào)度和處理,也是銜接表示層和模型層的橋梁,根據(jù)本案例的特點(diǎn),制定符合實(shí)際的Servlet控制器:在本案例根據(jù)功能的需要?jiǎng)澐殖傻膫€(gè)子模塊,每個(gè)模塊都需自己的控制器(Servlet),負(fù)責(zé)本模塊請(qǐng)求的調(diào)度和處理;在這些控制器中有可能會(huì)一些相同的方法,因此我們?cè)O(shè)計(jì)了一個(gè)基類(lèi)(BaseServlet),該類(lèi)繼承了HttpServlet系統(tǒng)類(lèi),另外的都繼承BaseServlet類(lèi),在基類(lèi)(BaseServlet)中做一些公共的方法供它的子類(lèi)調(diào)用在子類(lèi)中的各個(gè)方法中盡量自己處理異常,不要拋出異常在一個(gè)Servlet中,只需聲明一個(gè)全局變量就是EJB接口,其它的應(yīng)該全部聲明為局部變量在Servlet中有個(gè)初始化方法init(),該方法在整個(gè)Servlet的生命周期內(nèi)只執(zhí)行一次,我們可以用它來(lái)初始化EJB接口,如:Contextctx=newInitialContext(); Objectref=ctx.lookup("SystemSetupSession");SystemSetupSessionHomecreditSessionHome=(SystemSetupSessionHome)PortableRemoteObject.narrow(ref,SystemSetupSessionHome.class);//systemsetupSession定義為全局,可以共享 systemsetupSession=creditSessionHome.create();在整個(gè)WEB的運(yùn)行中,容器中只存在一個(gè)Servlet實(shí)例在Servlet中有個(gè)銷(xiāo)毀方法destroy(),主要在容器卸載WEB應(yīng)用時(shí)卸載系統(tǒng)所占的資源,在Servlet的生命周期中也只會(huì)調(diào)用一次,目前還沒(méi)有用到,現(xiàn)備用所有的需要取頁(yè)面的值(request,getparameter(“”))都在業(yè)務(wù)方法里面進(jìn)行,這樣可以保證頁(yè)面數(shù)據(jù)的私有性在Servlet中有兩個(gè)方法用于處理從頁(yè)面發(fā)來(lái)的請(qǐng)求,分別為:doGet()和doPost()方法:DoGet()方法:主要用來(lái)處理頁(yè)面的GET請(qǐng)求,有兩種情況:一﹑通過(guò)from的action轉(zhuǎn)發(fā)過(guò)來(lái)(method=get和省缺method不寫(xiě))的情況;二﹑就是普通的超連接(<ahref=””></a>)的情況DoPost()方法:主要用來(lái)處理頁(yè)面的POST請(qǐng)求,通過(guò)from的action轉(zhuǎn)發(fā)過(guò)來(lái)的情況(method=post)情況在本案例中兩個(gè)方法的處理方法一樣的所有頁(yè)面的請(qǐng)求都在Servlet中處理,處理的結(jié)果都放在request中傳回頁(yè)面,如://通過(guò)EJB接口取客戶數(shù)據(jù)ListcustomerList=customerSession.getCustomerByCompcode();//把得到的客戶列表存到request里面Request.setAttribute(“customerList”,customerList);//在JSP頁(yè)面上取數(shù)據(jù)Listlist=(List)request.getAttribute(customerList);Servlet控制器的訪問(wèn)路徑可以根據(jù)需要在(web.xml)中自由定義:假如:客戶模塊的控制器(CustomerServlet),在web.xml中配置如下<servlet-mapping><servlet-name>CustomerServlet</servlet-name><url-pattern>/CustomerServlet</url-pattern>url-pattern為相對(duì)web應(yīng)用的絕對(duì)路徑開(kāi)始url-pattern為用戶方法該控制器的url路徑在JSP頁(yè)面上可以直接訪問(wèn)該路徑所有的請(qǐng)求都轉(zhuǎn)發(fā)到控制器中,在doPost()方法中做統(tǒng)一處理,以action的值來(lái)區(qū)分不同的業(yè)務(wù)操作,再去執(zhí)行對(duì)應(yīng)的業(yè)務(wù)方法關(guān)于請(qǐng)求轉(zhuǎn)發(fā)的問(wèn)題:由于所有的數(shù)據(jù)用request來(lái)作為傳輸介質(zhì),但是要保證在同一個(gè)請(qǐng)求中數(shù)據(jù)才有效,所以我們只能做到請(qǐng)求轉(zhuǎn)發(fā),可能也有如下兩種情況:需要返回值的情況,只能用請(qǐng)求轉(zhuǎn)發(fā):RequestDispatcherreq=request.getRequestDispatcher("/list.jsp"); req.forward(request,response);req.forward(request,response);只有這樣在可以保證在同一個(gè)請(qǐng)求里面,才可以在list.jsp頁(yè)面上取數(shù)據(jù)/******特殊情況下用**********/如果在一個(gè)控制器中要調(diào)用別的控制器的業(yè)務(wù)方法的話,在回來(lái)RequestDispatcherreq=request.getRequestDispatcher("/list.jsp"); req.forward(request,response);req.include(request,response);/*****************************/不需要返回值的情況,如delete,update,add等,可以直接轉(zhuǎn)到某一個(gè)jsp:response.sendRedirect(“l(fā)ist.jsp”);不過(guò)這個(gè)方式很少,大多不用一般是在調(diào)用list方法,再轉(zhuǎn)發(fā)到list.jsp頁(yè)面Servlet中的方法盡量做到功能單一化在Servlet中的doPost方法中,如果沒(méi)有找到對(duì)應(yīng)的Action,則跳轉(zhuǎn)到錯(cuò)誤頁(yè)面用Servlet做的控制器的一些優(yōu)點(diǎn):根據(jù)Servlet的生命周期,在整個(gè)的web應(yīng)用中,Servlet在內(nèi)存中只會(huì)存在一個(gè)實(shí)例,即所有用戶共享該實(shí)例,全局變量也是共享的,只有局部變量才能保持私有化;所以盡量少用全局變量,才能盡可能的保證線程安全在doPost()方法中根據(jù)action來(lái)判斷請(qǐng)求的類(lèi)別,再去執(zhí)行相對(duì)應(yīng)的業(yè)務(wù)方法,這樣可以做能使代碼簡(jiǎn)潔﹑易懂和可維護(hù)性高在Servlet做了一些邏輯處理,才會(huì)讓JSP頁(yè)面上做到簡(jiǎn)潔。五、基于MVCFramework在jsp、javabean之間能有個(gè)東西自動(dòng)完成頁(yè)面請(qǐng)求數(shù)據(jù)的封裝、根據(jù)請(qǐng)求調(diào)用相應(yīng)的javabean、同時(shí)根據(jù)javabean的處理結(jié)果返回至相應(yīng)的View,有了這樣的思想后,發(fā)現(xiàn)smalltalk中的MVC思想很適合這種場(chǎng)景,于是便在JavaB/S開(kāi)發(fā)中引入了MVC思想,在這里也簡(jiǎn)單的介紹下MVC思想,MVC強(qiáng)調(diào)View和Model的分離,View所面對(duì)的是Controller,由Controller負(fù)責(zé)與Model進(jìn)行交互,View只負(fù)責(zé)顯示頁(yè)面以及顯示邏輯的處理,顯示邏輯指的是諸如第一行要顯示藍(lán)色、第二行要顯示紅色這樣的顯示方面的處理,Controller負(fù)責(zé)接受頁(yè)面請(qǐng)求,并將其請(qǐng)求數(shù)據(jù)進(jìn)行封裝,同時(shí)根據(jù)請(qǐng)求調(diào)用相應(yīng)的Model進(jìn)行邏輯處理,在Model處理后返回結(jié)果數(shù)據(jù)到Controller,Controller將根據(jù)此數(shù)據(jù)調(diào)用相應(yīng)的View,并將此數(shù)據(jù)傳遞給View,由View負(fù)責(zé)將數(shù)據(jù)進(jìn)行融合并最終展現(xiàn)。MVC帶來(lái)的優(yōu)點(diǎn)很明顯的體現(xiàn)出來(lái)了,基于一個(gè)這樣的MVCFramework的話開(kāi)發(fā)人員可以按照一種固定的模式進(jìn)行開(kāi)發(fā),規(guī)范了整個(gè)開(kāi)發(fā)過(guò)程,提高了質(zhì)量以及系統(tǒng)結(jié)構(gòu)的清晰性,并由于保證了View/Model的分離,使得一個(gè)Model可以對(duì)于多種顯示形式的View,需要的僅僅是去改變View和Controller。按照MVC思想,最容易想到的實(shí)現(xiàn)方案莫過(guò)于jsp+servlet+javabean,在這里面jsp對(duì)應(yīng)著View,servlet對(duì)應(yīng)著Controller,javabean對(duì)應(yīng)著Model,因?yàn)椴捎胹ervlet可使用servletcontainer已經(jīng)封裝好的頁(yè)面數(shù)據(jù)請(qǐng)求對(duì)象HttpServletRequest,這樣就省去了自己封裝頁(yè)面請(qǐng)求數(shù)據(jù)的工作,作為Controller同時(shí)還需要承擔(dān)根據(jù)請(qǐng)求調(diào)用對(duì)應(yīng)的javabean,最簡(jiǎn)單的做法無(wú)非就是在Servlet中直接根據(jù)某種邏輯(諸如反射或接口)調(diào)用相應(yīng)的bean進(jìn)行執(zhí)行,之后將HttpServletRequest、HttpServletResponse作為參數(shù)傳入javabean進(jìn)行處理,javabean從HttpServletRequest中獲取請(qǐng)求數(shù)據(jù),將返回的結(jié)果數(shù)據(jù)放入HttpServletResponse,整個(gè)過(guò)程結(jié)束后繼續(xù)由Controller接手進(jìn)行處理,這個(gè)時(shí)候作為Controller的servlet將根據(jù)處理的結(jié)果返回相應(yīng)的頁(yè)面,在這個(gè)模型使用時(shí)人們慢慢的發(fā)現(xiàn)了一個(gè)問(wèn)題,那就是隨著jsp、javabean的變化造成了controller的不斷修改,需要修改其中調(diào)用相應(yīng)javabean以及轉(zhuǎn)發(fā)相應(yīng)頁(yè)面的部分,為了解決這個(gè)問(wèn)題,首先想到的是應(yīng)該分離根據(jù)請(qǐng)求調(diào)用相應(yīng)javabean的步驟,這個(gè)時(shí)候采用了設(shè)計(jì)模式中的frontcontroller+applicationcontroller的方法,frontcontroller負(fù)責(zé)接受頁(yè)面請(qǐng)求并進(jìn)行封裝,同時(shí)將此數(shù)據(jù)對(duì)象傳遞至applicationcontroller,由applicationcontroller來(lái)負(fù)責(zé)調(diào)用相應(yīng)的bean,這樣的設(shè)計(jì)其實(shí)都是遵循著一個(gè)設(shè)計(jì)原則,就是職責(zé)單一,通常實(shí)現(xiàn)applicationcontroller的模式是Command模式,在這種情況下MVCFramework的結(jié)構(gòu)體系就演變成了view+controller(front+application)+model。六、Jsp+Jdbc在B/S開(kāi)發(fā)中最簡(jiǎn)單的一種開(kāi)發(fā)模式是頁(yè)面+邏輯處理,映射到技術(shù)上反應(yīng)出來(lái)的有Jsp+Jdbc,在基于這類(lèi)的實(shí)現(xiàn)中在View層也就是jsp頁(yè)面上負(fù)責(zé)數(shù)據(jù)的顯示、邏輯處理,結(jié)合jdbc完成數(shù)據(jù)的持久化,在小型的項(xiàng)目中,人們確實(shí)發(fā)現(xiàn)這種方式是最為方便的,但在復(fù)雜的項(xiàng)目以及需求不斷變化的項(xiàng)目中,人們慢慢的發(fā)現(xiàn)這種方式造成了不少的問(wèn)題,首先是調(diào)試的問(wèn)題,想想在一個(gè)jsp頁(yè)面中進(jìn)行排錯(cuò)是多么的困難,其次是修改的問(wèn)題,為了滿足用戶需求的一個(gè)小小的變化,都需要去改不少的頁(yè)面,而且很多時(shí)候由于寫(xiě)的時(shí)間長(zhǎng)了,自己都需要回憶很久才能想起是怎么回事,更不用說(shuō)如果人員流動(dòng)了會(huì)怎么樣,同時(shí)還帶來(lái)開(kāi)發(fā)效率的問(wèn)題,由于需要缺少足夠的調(diào)試的支持,需要較為熟練的開(kāi)發(fā)人員才能快速的完成,對(duì)于一般的人員來(lái)說(shuō)需要一定的適應(yīng)和學(xué)習(xí)過(guò)程,當(dāng)然伴隨而來(lái)的還有諸如修改界面的時(shí)候一不小心少copy了點(diǎn)代碼什么造成的錯(cuò),最大的問(wèn)題可能還是重用的問(wèn)題,通常會(huì)造成N多同樣的代碼在頁(yè)面上copy來(lái)copy去的,總結(jié)下來(lái)在這種模式下有幾個(gè)比較重大的問(wèn)題就是:1、調(diào)試問(wèn)題。2、維護(hù)問(wèn)題,顯示和邏輯處理在一起導(dǎo)致了修改顯示的時(shí)候較為困難,至于修改代碼則因?yàn)橹暗恼{(diào)試問(wèn)題導(dǎo)致了困難,同時(shí)由于邏輯均在頁(yè)面上后期接手人員需要一段時(shí)間去理解。3、代碼重用性問(wèn)題。但同樣它還是存在優(yōu)點(diǎn)的,那就是可以很快的上手,但由于調(diào)試和維護(hù)性問(wèn)題確實(shí)太大了,所以在現(xiàn)在也是基本不再采用這種方式了。七、Jsp+JavaBeanJSP+JavaBean這樣的技術(shù)體系,在這個(gè)體系中由jsp頁(yè)面負(fù)責(zé)顯示以及接收頁(yè)面請(qǐng)求,并調(diào)用相應(yīng)的JavaBean來(lái)完成邏輯處理,在獲取其返回的處理數(shù)據(jù)后轉(zhuǎn)到相應(yīng)的頁(yè)面進(jìn)行顯示。在這樣的技術(shù)體系中,由于邏輯是由JavaBean來(lái)完成的,可以對(duì)其進(jìn)行調(diào)試了,代碼的重用性一定程度上也得到了提高。剛開(kāi)始的時(shí)候用這樣的技術(shù)體系確實(shí)發(fā)現(xiàn)比以前用jsp+jdbc爽了很多,但隨著用多了,慢慢又發(fā)現(xiàn)了問(wèn)題,那就是在頁(yè)面中需要編寫(xiě)對(duì)于頁(yè)面請(qǐng)求數(shù)據(jù)的獲取,還得根據(jù)請(qǐng)求去調(diào)用相應(yīng)的javabean,并根據(jù)javabean的處理結(jié)果轉(zhuǎn)入相應(yīng)的頁(yè)面,這

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論