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

正文內容

基于jspmysql的網上書店設計與實現畢業(yè)論文(編輯修改稿)

2024-07-15 15:44 本頁面
 

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