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

正文內(nèi)容

基于jspmysql的網(wǎng)上書店設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文(編輯修改稿)

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

【文章內(nèi)容簡(jiǎn)介】 新部署整個(gè)項(xiàng)目,而tomcate這樣的服務(wù)器,還必須重新啟動(dòng)服務(wù)器,如果業(yè)務(wù)變更復(fù)雜頻繁的系統(tǒng),這樣的操作簡(jiǎn)單不可想象?,F(xiàn)在就是這樣,幾十上百個(gè)人同時(shí)在線使用我們的系統(tǒng),大家可以想象一下,我的煩惱有多大。二、 Struts 的Action必需是thread-safe方式,它僅僅允許一個(gè)實(shí)例去處理所有的請(qǐng)求。所以action用到的所有的資源都必需統(tǒng)一同步,這個(gè)就引起了線程安全的問題。三、測(cè)試不方便. Struts的每個(gè)Action都同Web層耦合在一起,這樣它的測(cè)試依賴于Web容器,單元測(cè)試也很難實(shí)現(xiàn)。不過有一個(gè)Junit的擴(kuò)展工具Struts TestCase可以實(shí)現(xiàn)它的單元測(cè)試。四、 類型的轉(zhuǎn)換. Struts的FormBean把所有的數(shù)據(jù)都作為String類型,它可以使用工具CommonsBeanutils進(jìn)行類型轉(zhuǎn)化。但它的轉(zhuǎn)化都是在Class級(jí)別,而且轉(zhuǎn)化的類型是不可配置的。類型轉(zhuǎn)化時(shí)的錯(cuò)誤信息返回給用戶也是非常困難的。五、 對(duì)Servlet的依賴性過強(qiáng). Struts處理Action時(shí)必需要依賴ServletRequest 和ServletResponse,所有它擺脫不了Servlet容器。六、 ,所以它主要使用JSTL的表達(dá)式語(yǔ)言來獲取數(shù)據(jù)??墒荍STL的表達(dá)式語(yǔ)言在Collection和索引屬性方面處理顯得很弱。七、 對(duì)Action執(zhí)行的控制困難. Struts創(chuàng)建一個(gè)Action,如果想控制它的執(zhí)行順序?qū)?huì)非常困難。甚至你要重新去寫Servlet來實(shí)現(xiàn)你的這個(gè)功能需求。八、 對(duì)Action 執(zhí)行前和后的處理. Struts處理Action的時(shí)候是基于class的hierarchies,很難在action處理前和后進(jìn)行操作。九、 對(duì)事件支持不夠. 在struts中,實(shí)際是一個(gè)表單Form對(duì)應(yīng)一個(gè)Action類(或DispatchAction),換一句話說:在Struts中實(shí)際是一個(gè)表單只能對(duì)應(yīng)一個(gè)事件,struts這種事件方式稱為application event,application event和ponent event相比是一種粗粒度的事件。 Struts的工作流程下圖是Struts的工作流程,所有的請(qǐng)求都提交給ActionServlet來處理?! D3251ActionServlet是一個(gè)FrontController,它是一個(gè)標(biāo)準(zhǔn)的Servlet,它將request轉(zhuǎn)發(fā)給RequestProcessor來處理, ActionMapping是ActionConfig的子類,從中可以取得所有的配置信息 RequestProcessor根據(jù)提交過來的url,如*.do,從ActionMapping 中得到相應(yīng)的ActionForn和Action。然后將request的參數(shù)對(duì)應(yīng)到ActionForm中,進(jìn)行form驗(yàn)證。如果驗(yàn)證通過則調(diào)用Action的execute()方法來執(zhí)行Action,最終返回ActionFoward。 ActionFoward是對(duì)mapping中一個(gè)foward的包裝,對(duì)應(yīng)于一個(gè)url ActionForm使用了ViewHelper模式,是對(duì)HTML中form的一個(gè)封裝。其中包含有validate方法,用于驗(yàn)證form數(shù)據(jù)的有效性。ActionForm是一個(gè)符合JavaBean規(guī)范的類,所有的屬性都應(yīng)滿足get和set對(duì)應(yīng)。對(duì)于一些復(fù)雜的系統(tǒng),還可以采用DynaActionForm來構(gòu)造動(dòng)態(tài)的Form,即通過預(yù)制參數(shù)來生成Form。這樣可以更靈活的擴(kuò)展程序。 ActionErrors是對(duì)錯(cuò)誤信息的包裝,即可產(chǎn)生一個(gè)ActionError并最終加入到ActionErrors。在Form驗(yàn)證的過程中,如果有Error發(fā)生,則會(huì)將頁(yè)面重新導(dǎo)向至輸入頁(yè),并提示錯(cuò)誤。 Action是用于執(zhí)行業(yè)務(wù)邏輯的RequsestHandler。每個(gè)Action都只建立一個(gè)instance。Action不是線程安全的,所以不應(yīng)該在Action中訪問特定資源。一般來說,應(yīng)改使用 Business Delegate 模式來對(duì)Business tier進(jìn)行訪問以解除耦合?! truts提供了多種Action供選擇使用。普通的Action只能通過調(diào)用execute執(zhí)行一項(xiàng)任務(wù),而DispatchAction可以根據(jù)配置參數(shù)執(zhí)行,而不是僅進(jìn)入execute()函數(shù),這樣可以執(zhí)行多種任務(wù)。如insert,update等。LookupDispatchAction可以根據(jù)提交表單按鈕的名稱來執(zhí)行函數(shù)。 Hibernate簡(jiǎn)介隨著計(jì)算機(jī)應(yīng)用軟件的發(fā)展,應(yīng)用程序逐漸由單層體系結(jié)構(gòu)發(fā)展為多層體系結(jié)構(gòu)。其中,三層結(jié)構(gòu)是目前典型的一種應(yīng)用軟件結(jié)構(gòu),如圖1左。圖1表述層:提供與用戶交互的界面,如GUI(圖形用戶界面),web頁(yè)面等;業(yè)務(wù)邏輯層:負(fù)責(zé)各種業(yè)務(wù)邏輯,直接訪問數(shù)據(jù)庫(kù),提供對(duì)業(yè)務(wù)數(shù)據(jù)的保存、更新、刪除和查詢操作;數(shù)據(jù)庫(kù)層:負(fù)責(zé)存放管理應(yīng)用的持久性業(yè)務(wù)數(shù)據(jù) 三層結(jié)構(gòu)的特點(diǎn)是:所有下層向上層提供調(diào)用的接口,具體實(shí)現(xiàn)細(xì)節(jié)對(duì)上層透明。層與層之間存在自上而下的依賴關(guān)系,即上層會(huì)訪問下層的API,但下層不依賴于上層。  Hibernate顧名思義冬眠的意思,相信它的創(chuàng)造者的用意在于用這個(gè)工具將數(shù)據(jù)庫(kù)連接持久化層冬眠,關(guān)于Hibernate網(wǎng)上爭(zhēng)論很多,有人說其為工具,有人說其為框架,我相信一個(gè)人有一個(gè)人理解問題的角度,只要處理問題的方法正確就可以了。Hibernate是采用ORM映射機(jī)制的持久層開發(fā)工具,它是JAVA應(yīng)用和關(guān)系數(shù)據(jù)庫(kù)之前的橋梁,負(fù)責(zé)JAVA對(duì)象和關(guān)系數(shù)據(jù)之間的映射。內(nèi)部封裝了JDBC訪問數(shù)據(jù)庫(kù)的操作,向上層應(yīng)用提供了面向?qū)ο蟮臄?shù)據(jù)庫(kù)訪問API,在JAVA應(yīng)用中使用到Hibernate包含如下步驟。3. 創(chuàng)建對(duì)象-關(guān)系-映射文件如果想了解Hibernate或者是要學(xué)習(xí)它的人必須要首先了解兩個(gè)比較重要的概念:POJO:在Hibernate中理解為數(shù)據(jù)庫(kù)表所對(duì)應(yīng)的Domain Object,如果從子面上理解就是無格式普通JAVA對(duì)象,簡(jiǎn)單的理解就是一個(gè)不包含邏輯代碼的值對(duì)象。從數(shù)據(jù)層面上看,POJO作為數(shù)據(jù)實(shí)體的對(duì)象化表現(xiàn)形式,也成為實(shí)體。 ORM:ORM可以理解成一種機(jī)制也可以理解成一種模式,對(duì)象-關(guān)系-映射,我個(gè)人覺得如果想理解它可以和MVC比較,模型-視圖-控制。ORM是把對(duì)象和關(guān)系數(shù)據(jù)庫(kù)映射到一起,而MVC是把視圖和模型控制在一起。創(chuàng)建Hibernate的配置文件Hibernate從中讀取和數(shù)據(jù)庫(kù)連接的相關(guān)信息,這個(gè)配置文件應(yīng)該位于應(yīng)用的classpath中。創(chuàng)建持久化類就是指需要被Hibernate持久化到數(shù)據(jù)庫(kù)中的類,持久化類通常都是模型中的實(shí)體類,符合JavaBean的規(guī)范,包含一些屬性,以及與之對(duì)應(yīng)的get、set方法。 分層架構(gòu)核心思想對(duì)于一個(gè)業(yè)務(wù)系統(tǒng)而言,系統(tǒng)研發(fā)的目標(biāo)是為特定業(yè)務(wù)提供支持,業(yè)務(wù)邏輯往往是系統(tǒng)的核心,將業(yè)務(wù)邏輯與數(shù)據(jù)訪問邏輯分離是很重要的。流行的MVC三層開發(fā)結(jié)構(gòu)圖:圖31 MVC模型圖分層的好處:,如業(yè)務(wù)邏輯層可以不必清楚如何與數(shù)據(jù)庫(kù)建立連接,如何執(zhí)行一個(gè)sql查詢,只需調(diào)用數(shù)據(jù)訪問層提供的接口就行。 ,盡量避免對(duì)上層結(jié)構(gòu)產(chǎn)生影響 數(shù)據(jù)庫(kù)設(shè)計(jì)表331 管理員信息表(admin)表332 銷售圖書記錄表(cart)表333 會(huì)員買書詳細(xì)記錄表(cartselectedmer)表334 圖書類別表(category)表335 評(píng)論表(leaveword)表336 會(huì)員信息表(member)表337 會(huì)員類別表(memberlevel)表338 圖書詳細(xì)信息表(merchandise)表339 訂單表(orders) 控制器設(shè)計(jì)與實(shí)現(xiàn)在Structs中使用的控制器是Action,詳細(xì)的實(shí)現(xiàn)如下:1.,因?yàn)檫@是struts的關(guān)鍵文件,我遇到的相當(dāng)多的錯(cuò)誤都是這里的問題。2.對(duì)于struts中的一些常用的類,象 Actionform、Validatorform、DynaActionform Action、DispatchAction、SwitchAction ActionMapping、ActionForward 要知道它們的功能及如何使用,唯一的辦法就是多寫程序。3.對(duì)于struts的標(biāo)簽庫(kù),要知道是在服務(wù)器端執(zhí)行的,雖然樣子和html語(yǔ)言的元素很象,但決不是一回事。標(biāo)簽庫(kù)內(nèi)容很多,用不著都弄明白,但有些是必須要會(huì)用的: Html庫(kù)基本都要掌握 Bean庫(kù):define、message、parameter、write Logic庫(kù):iterate,其他雖然不是必需的,但如果能靈活使用,也有不少好處 其它庫(kù)我在實(shí)際中很少用,應(yīng)該不是太重要4.盡量熟悉struts的執(zhí)行流程,ActionServlet都做了哪些工作,如果大家有興趣的話,就研究源代碼中ActionServlet類的init和process方法,搞懂這個(gè)之后,對(duì)struts的理解自不可同日而語(yǔ)。5.目前還沒看到中文的比較全面系統(tǒng)的資料,我一直看的是《Programming Jakarta Struts》《Struts In Action》《Mastering Jakarta Struts》這三本書,入門時(shí)是比較費(fèi)勁,習(xí)慣以后也就沒什么了。6.對(duì)于錯(cuò)誤的調(diào)試是絕對(duì)讓人頭疼的問題,有的甚至只是顯示一個(gè)白頁(yè)。,逐步確定錯(cuò)誤的位置。其實(shí)關(guān)鍵還是要沉住氣,有時(shí)一個(gè)錯(cuò)誤花半天時(shí)間才解決,等錯(cuò)誤處理多了,水平自然會(huì)提高。7.在論壇中大家多多交流,干計(jì)算機(jī)這一行閉門造車是絕對(duì)不行的,相信這個(gè)道理大家都知道。當(dāng)初我注冊(cè)這個(gè)網(wǎng)站時(shí),是絕對(duì)的菜鳥。 如果挨個(gè)往郵箱里發(fā)太麻煩了,按斑竹的意思我把內(nèi)容貼了出來,內(nèi)容不少,大家耐心看吧 ActionMapping類 將特定請(qǐng)求映射到特定Action的相關(guān)信息存儲(chǔ)在ActionMapping中,ActionServelt將ActionMapping傳送到Action類的execute()方法,Action將使用ActionMapping的findForward()方法,此方法返回一個(gè)指定名稱的ActionForward,這樣Action就完成了本地轉(zhuǎn)發(fā)。若沒有找到具體的ActionForward,就返回一個(gè)null. ActionMapping的方法: public ExceptionConfig findException(Class type) ,查找異常對(duì)象 public ActionForward findForward(String name) 可在映射中動(dòng)態(tài)添加ActionForward: public String[] findForwards()找到一個(gè)Action可以使用的actionForward列表 public ActionForward getInputForward() 得到本action的輸入ActionForard. Action類 Action類真正實(shí)現(xiàn)應(yīng)用程序的事務(wù)邏輯,它們負(fù)責(zé)處理請(qǐng)求。在收到請(qǐng)求后,ActionServlet會(huì): ,創(chuàng)建Action的一個(gè)實(shí)例 ()方法 如果ActionServlet不能找到有效的映射,它會(huì)調(diào)用默認(rèn)的Action類(在配置文件中定義)。如果找到了ActionServlet將適當(dāng)?shù)腁ctionMapping類轉(zhuǎn)發(fā)給Action,這個(gè)Action使用ActionMapping找到本地轉(zhuǎn)發(fā),然后獲得并設(shè)置ActionMapping屬性。根據(jù)servlet的環(huán)境和被覆蓋的execute ()方法的簽名,ActionServlet也會(huì)傳送ServletRequest對(duì)象或HttpServletRequest對(duì)象。 ,并且覆蓋類中定義的某一個(gè)execute ()方法。有兩個(gè)execute ()方法: 處理非HTTP(一般的)請(qǐng)求: public ActionForward execute (ActionMapping action, Acionform form, ServletRequest request, ServletResponse response) throws 處理HTTP請(qǐng)求: public ActionForward execute (ActionMapping action, Acionform form, HttpServletRequest request, HttpServletResponse response) throws Action類必須以”線程安全”的方式進(jìn)行編程,因?yàn)榭刂破鲿?huì)令多個(gè)同時(shí)發(fā)生的請(qǐng)求共享同一個(gè)實(shí)例,相應(yīng)的,在設(shè)計(jì)Action類時(shí)就需要注意以下幾點(diǎn): 不能使用實(shí)例或靜態(tài)變量存儲(chǔ)特定請(qǐng)求的狀態(tài)信息,它們會(huì)在同一個(gè)操作中共享跨越請(qǐng)求的全局資源 如果要訪問的資源(如JavaBeans和會(huì)話變量)在并行訪問時(shí)需要進(jìn)行保護(hù),那么訪問就要進(jìn)行同步 Action類的方法 除了execute ()方法外,還有以下方法: 可以獲得或設(shè)置與請(qǐng)求相關(guān)聯(lián)的區(qū)域: public Locale getLocale(HttpServletRequest request) public void setLocale(HttpServletRequest request,Locale
點(diǎn)擊復(fù)制文檔內(nèi)容
規(guī)章制度相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1