基于java的宠物管理系统设计与实现(项目报告+答辩PPT+源代码+数据库+截图+部署视频)
基于JAVA的寵物網站的設計與實現
本系統是采用Java技術來構建的一個基于Web技術的B/S結構的寵物網站,該網站建立在Spring和Struts2框架之上,前臺使用JSP作為開發語言,后臺使用MySQL數據庫管理系統對數據進行管理,開發環境選用MyEclipse,應用服務器采用Tomcat。
寵物網站系統為廣大用戶實現便捷的購買寵物的功能,實現寵物商店的網絡化管理。網站前臺系統主要負責與用戶打交道,實現用戶的注冊、登錄、寵物預覽、提交訂單等功能。網站后臺系統主要實現管理員登錄、會員中心、新聞動態、完成訂單、系統維護等功能。結果表明,本系統能夠實現所需的功能,并且運行狀況良好。
本文分為六個部分。在緒論里首先分析了課題的研究背景與研究現狀;第二章介紹了本系統開發采用的技術;第三章根據軟件開發流程,對系統進行可行性分析和需求分析;第四章為系統概要設計,本章提出系統總體功能模塊的設計,并對數據庫的結構進行設計;第五章著重介紹各個功能模塊的實現方案;最后,第六章介紹系統單元測試和性能測試的設計,以及對測試結果的分析。
寵物商店網站系統;JSP;Mysql數據庫;Spring和Struts2框架
目??? 錄
摘 要..................................................................................................................... i
ABSTRACT........................................................................................................... ii
1緒論.................................................................................................................... 1
1.1研究的背景和意義..................................................................................... 1
1.2國內外研究現狀......................................................................................... 2
1.3研究內容和步驟......................................................................................... 4
2基本技術方案...................................................................................................... 5
2.1系統采用的技術......................................................................................... 5
2.1.1JSP技術.......................................................................................... 5
2.1.2 JavaScript技術............................................................................ 5
2.1.3Servlet技術................................................................................... 6
2.2基于B/S的WEB應用體系結構................................................................. 7
2.3MyEclipse簡介........................................................................................... 9
2.4Tomcat簡介.............................................................................................. 11
2.5Struts 2框架.............................................................................................. 11
2.6 Spring框架.............................................................................................. 14
3.系統需求分析.................................................................................................... 21
3.1功能需求分析.......................................................................................... 21
3.2系統設計規則.......................................................................................... 22
3.3系統的可行性分析................................................................................... 22
3.3.1技術可行性.................................................................................... 22
3.3.2經濟可行性.................................................................................... 22
3.3.3操作可行性.................................................................................... 22
3.3.4 技術可行性分析............................................................................ 23
3.3.5 運行可行性分析............................................................................ 23
3.3.6 經濟可行性分析............................................................................ 23
3.4運行環境................................................................................................. 23
4.寵物網站系統概要設計...................................................................................... 24
4.1系統功能結構圖....................................................................................... 24
4.2系統交互圖.............................................................................................. 25
4.3數據庫設計.............................................................................................. 26
4.4系統概要設計.......................................................................................... 29
4.4.1系統的前臺.................................................................................... 29
4.4.2系統的后臺.................................................................................... 33
5.系統的詳細設計與功能實現............................................................................... 35
5.1應用層配置.............................................................................................. 35
5.2登錄功能的實現....................................................................................... 36
5.3注冊功能的實現....................................................................................... 37
5.4商品管理功能的實現................................................................................ 38
5.5訂單管理模塊的實現................................................................................ 40
5.6會員管理模塊的實現................................................................................ 40
6.測試與性能分析................................................................................................ 41
6.1系統測試目的與意義................................................................................ 41
6.2測試環境................................................................................................. 42
6.3測試過程................................................................................................. 42
6.4測試的主要內容及結果............................................................................ 43
總結與展望.......................................................................................................... 45
參考文獻.............................................................................................................. 46
致謝..................................................................................................................... 47
附錄:英文翻譯................................................................................................... 49
1.英文原文........................................................................................................... 49
2.中文翻譯........................................................................................................... 54
1緒論
1.1研究的背景和意義
隨著社會的進步,人民生活水平的提高,特別是近些年來,寵物以突飛猛進的速度進入到百姓家里,成為人們生活中重要娛樂內容之一。以前寵物只是貴族人的娛樂項目,迄今,我國已經把寵物作為一種生活的方式已得到普遍認可,伴隨著人民精神文明的提高,越來越多的寵物已經和我們成為了好朋友。但是,我們該怎么和他們去相處,該怎么樣去呵護他們,畢竟他們和人類還有很大的區別,我們應該給他們用什么樣的東西?我們應該給他們吃些什么好呢?大多數人都不知道,他們只是簡單的知道應該像照顧孩子一樣去照顧他們,但是他們并不會說話,甚至有些人并不會把他們當作孩子來呵護!由此可見寵物商品的相關信息已經成為重要的話題。
寵物作為我們人類的友好的朋友動物是我們人類獲得快樂幸福與健康的一個重要來源,而且飼養寵物可以讓人們的生活的更豐富多彩,更加幸福充實,同時陪著寵物運動對身體有很大好處能夠有效的降低身體里血壓和血脂,在當前越發競爭激烈的社會中可以提供良好的精神支持特別當我們遇到挫折時,我們可以通過與寵物的交流,調節我們的心情有助于我們的心理健康管理,緩解我們生活中遇到的各種壓力從而提高工作上的效率。另一方面養可愛的寵物可以培養我們后代的責任心和愛心以及社會社交能力。當我們的孩子與狗狗愉快的玩耍時,狗狗可以傳遞許多正能量。而且最關鍵的是養寵物可以保護我們的家庭財產安全,可以起到家庭防止被盜竊保護作用使我們整個家庭有一種安全放心感。寵物也可以給我們以及后代帶來無限的歡樂樂趣成為幸福和快樂的源泉,并能夠幫助人們積極出去促進進行體育鍛煉,給我們提供了許多人與他人相互溝通交流的機會。目前養寵物的人數增加的非常迅速,越來越多的寵物信息的網站應運而生。將傳統宣傳與日益成熟的網絡宣傳結合在一起,打造一個兼具傳統和電子商務特色的寵物銷售網站,極具意義。
隨著電子商務的發展趨勢日趨成熟伴隨著社會發展的必然如何面對電子商務方式、以及如何適應數字化生存并積極參與電子商務時代的國際競爭中取得良好的機會。這是關系到每一個公民、每個公司企業和部門及國家發展與生存的重要的戰略問題,而且也是我們國家管理部門現在應該規劃、并鼓勵其大力發展的關鍵問題。
目前隨著我們的科學技術的不斷的發展提高,我們的計算機科學水平日益發展成熟,它給我們帶來的好處已被我們深刻了解,而且它已經在我們人類生活社會的各個領域范圍內發揮著越來越關鍵的作用。這主要歸功與因為計算機商品信息具有著多人工管理所不具備的優勢,比如:檢索迅速、查找方便、可靠性高、存儲量大、保密性良好等。這些優勢極大的提高了信息管理的速度,這也正是將來公司企業的科學化、正規化管理,和世界接軌的至關重要的條件。所以,我們急需研制出開發一套寵物商品網站系統對有效管理相關信息是非常必要的。
1.2國內外研究現狀
?? 目前社會由于隨著人們的生活水平的日益提高改善以及城市化速度的快速向前發展以及城市家庭規模的縮小,寵物慢慢的成為我們生活中的關鍵部分。根據一些資料顯示,而今中國都市擁有寵物數目已經超過1億只,并且其數量增加速度越來越快,如日中天的寵物市場行業熱吸引了越來越多的人的關注!接下來我們將大概的闡述我國目前寵物行業的發展現狀。由此帶來的問題和建議以及發展前景。
最近這些年計算機和互聯網建設獲得了高速的發展。在中國,互聯網已經是廣大人民生活的一部分。現在中國社會提倡互聯網加,互聯網與傳統行業結合,以提供效益和競爭力。使用計算機和互聯網對線上銷售平臺進行管理,它有著很大的價值。同時有著特有的功能比如:檢索快速、查看方便快捷、效率高、成本低、存儲數據量大、使用壽命長、并且溝通成本低等,這些優點能為商品銷售提供極大的便利。而且只要銷售網站設計合理,就可以為手機廠商添加新的銷售渠道,減少手機產品的庫存,利用網絡的共享、互動的優點,結合實體銷售的優點,借助數據庫管理技術實現手機產品網上銷售規范化、個性化、人性化。寵物主要是以狗、貓為主。我們以狗為例,現在為什么社會越來越多的人喜歡它而且愿意養它呢?狗起源于狼,目前已經得到了共識,但圍繞著具體的發源地和時間則是眾說紛紜。到目前為止,最早的狗化石證據是來自于德國14000年前的一個下頜骨化石,另外一個是來源于中東大約12000年前的一個小型犬科動物骨架化石。這不過養寵物對我們人類來說有諸多的好處,比如說以下幾個方面1日常生活中我們可以和狗狗玩耍,增加許多生活中的樂趣
當我們工作或學習一天后,帶著渾身疲憊的回到家中,看見繞膝承歡的小狗后,一切煩惱憂愁不愉快都拋到到腦后。目前有很多老人,很多家里只有一個兒女,而且兒女長期在外地工作不在身邊,養一個狗或貓,能夠給老年人帶來很大的精神寄托,減少他們孤獨的感覺,重新幫助他們對生活的信心。
寵物也可以幫助小的孩子一顆積極純潔向上的心,而且根據有關資料顯示,狗狗也對治療兒童癡呆癥和自閉癥等疾病都有莫大的幫助,每年都有很多的志愿者,帶著他們的自己的狗狗到孤兒院或兒童心理疾病治療中心去幫助那里的孩子,給哪里的孩子帶來了許多快樂。甚至連一些患有高血壓或者心臟病的病人靠和狗狗和貓咪的交流玩耍可以降低血壓和減少心臟病的復發。
2:寵物在救援社會活動中也扮演著至關重要的角色
狗狗在我們社會中扮演者原來越重要的角色,狗因為天生具有良好的嗅覺,它的嗅覺極其發達和靈敏,利用此特性可以發掘獵物,槍支,彈藥等。有專門的警犬用于幫助警察破案,而且發揮著至關重要的作用。
這些年來,由于數據倉庫技術,網絡信息技術,電子商務信息技術的飛速發展,可視化技術已經涉及到人們生活的各個部分,人們提出進一步定義數據可視化概念,特別注重在可視化大型數據庫或數據倉庫中的可視化。這是在非空間數據領域中應用可視化技術,使人們不需要束縛于通過關系數據表來研究和理解數據,而且在一個比較直觀的方式下查詢數據和相關結構之間的關系。在當今社會隨著互聯網的高速普及,電子商務成為熱點,由于淘寶和京東的存在,商家傳統的銷售渠道受到了極大的挑戰,利潤降低并且銷量下降,傳統的模式的商家情況不容樂觀。而在線網絡銷售網站比實體店鋪具有更高的優勢,只需要很少的人工和互聯網環境就可以實現在線購物,用戶可以直接從網上查看購買所需要的網絡產品,同時網絡銷售網站提供了廣泛和快捷的搜索途徑,方便用戶查找,分類精確,購物良好、風險小,完善了消費體驗。所以手機銷售網站受到傳統模式企業的關注,并且紛紛開通在線手機銷售網站。消費者在網站注冊后可以瀏覽網站信息、按需要搜索網絡產品、找到想購買的產拼后通過下定單實現用戶的在線購買,使交易更加迅速、準確;管理員登錄后可以管理用戶、信息和定單等實現系統的更新維護。
???? 圖1-1 ????到2015年為止中國市場寵物產業規模現狀
1.3研究內容和步驟
本文主要分為六個章節,第一部分為前言,主要介紹了課題背景、研究意義、國內外研究現狀、課題的研究方法、技術路線以及本文研究的主要內容等。
第二部分為相關技術簡介,主要介紹了JSP技術、MyEclipse、Tomcat、以及Oracle數據庫等。
第三部分為系統分析,主要介紹了可行性分析、包括技術可行性、經濟可行性、操作可行性等。
第四部分為需求分析,主要進行了系統的功能需求分析和非功能需求分析等。
第五部分為系統概要設計,主要介紹了系統設計過程。
第六部分為系統詳細設計,對系統詳細設計實現進行了介紹。
第七部分為測試,主要對系統功能進行了測試。
2基本技術方案
2.1系統采用的技術
2.1.1JSP技術
Jsp技術sun倡導并聯合其它公司創建的動態生成HTML,xml或其他文檔的技術規范,JSP是一門技術規范,也是一門腳本語言,在Jsp中我們可以使用特定語言即Java語言編寫html,xml,以及其他文檔的編寫規范。
圖2.1.1 項目中Jsp部分的代碼
(1)Jsp擁有java語言的所有特性,列入面向對象,健壯,安全,可移植,高性能,多線程等。
(2)Jsp運行與jsp的容器之中,比較典型的有tomcat。
(3)在開發項目過程中,jsp文件會轉換成servlet文件,servlet會在轉換成相應的class文件。
(4)多樣化和功能強大的開發工具支持。Java已經有了許多非常優秀的開發工具,而且許多可以免費得到,并且其中許多已經可以順利的運行于多種平臺之下
(5)支持服務器端組件。web應用需要強大的服務器端組件來支持,開發人員需要利用其他工具設計實現復雜功能的組件供web頁面調用,以增強系統性能。JSP可以使用成熟的JAVA BEANS 組件來實現復雜商務功能。
內部對象說明:request 客戶端請求,此請求會包含來自GET/POST請求的參數; response 網頁傳回客戶端的響應;pageContext 網頁的屬性是在這里管理; session 與請求有關的會話; application servlet正在執行的內容;out 用來傳送響應的輸出流; config 代碼片段配置對象;page JSP網頁本身; exception 針對錯誤網頁,未捕捉的例外。
2.1.2 JavaScript技術
JavaScript是一種基于對象和事件驅動并具有相對安全性的客戶端腳本語言。同時也是一種廣泛用于客戶端Web開發的腳本語言,常用來給HTML網頁添加動態功能,比如響應用戶的各種操作。JavaScript的一個重要功能就是面向對象的功能,通過基于對象的程序設計,可以用更直觀、模塊化和可重復使用的方式進行程序開發。在HTML基礎上,使用Javascript可以開發交互式Web網頁。JavaScript的出現使得網頁和用戶之間實現了一種實時性的、動態的、交互性的關系,使網頁包含更多活躍的元素和更加精彩的內容。在本系統中很多地方使用了JavaScript技術,比如說,檢驗用戶輸入數據的有效性,是否重復,是否為空等等。
2.1.3Servlet技術
Servlet是servlet加applet的縮寫,applet是運行Java客戶端中的小程序,java誕生的時候也就是因為applet而聞名于世,不過現在applet現在很少有人使用了,而servlet在不斷的發展和更新之中,現在已經成為很多技術的基礎比如spring和strutes2等等。Servlet本質上也就是JAVA類,所以在編寫時要尊崇java規則,不過servlet與普通的java類也有所不同,比如說,它沒有main方法,他是靠服務器所運行的,它的創建和銷毀都是由它自己的容器說產生的。這里說的容器我們這的是類似于tormat服務器。有自己的servlet規則,因此他有一些普通java類所不具有的特性。Servlet與http是緊密聯系的,所以使用servlet可以處理所有與HTTP相關的類容,這也是servlet廣泛應用的原因之一。
圖2—1 項目中servlet 的代碼
我的項目中幾乎每一個JAVA文件都要用到servlet,其中我們使用到的最主要的方法為service(httpServlet Request,httpServletResponse)方法。
圖2—2 項目中service 的代碼
通過request與response的來實現前臺與后臺之間的數據傳輸。我們可以在xml文件中配置servlet屬性,其中servlet用來注冊個servlet,而它有兩個主要元素一個是servalet—name和servlet-class,前者用來定義servlet的名稱,后者用來確定servlet的完全限定名,還有映射servlet-mapping標簽。下面是servlet的主要流程圖
圖2 servlet的主要流程圖
Servlet的生命周期主要有service,init,destroy等。
使用Servlet的目的是為了幫助我們減少在運用MVC設計模型來開發Web應用的時間。Servlet是Apache軟件基金會(ASF)贊助的一個開源項目。它最初是Jakarta項目中的一個子項目,并在2002年3月成為ASF的頂級項目。它通過采用Java Servlet/JSP技術,實現了基于Java EE Web應用的Model-View-Controller〔MVC〕設計模式的應用框架〔Web Framework〕,是MVC經典設計模式中的一個經典產品。它的優點在于:
(1),Servlet基于MVC架構,框架結構清晰,開發流程一目了然,開發人員可以很好的掌控開發的過程;
(2),使用OGNL進行參數傳遞;
(3),強大的攔截器;
(4),易于測試;
(5),易于擴展的插件機制;
全局結果與聲明式異常。
2.2基于B/S的WEB應用體系結構
??? Web,全稱為World Wide Web,縮寫為WWW。Web有許多譯名,諸如環球網、萬維網、全球信息網等。簡單地說,Web是一種體系結構,通過它可以訪問分布于Internet主機上的超文本頁面。這一說法包含以下兩層含義:第一, Web是Internet提供的一種服務。 第二,Web是存儲在全世界Internet計算機中、數量巨大的文檔的集合,或者可以說,Web是世界上最大的電子信息倉庫[7] [8]。
Web上的海量信息是由彼此關聯的文檔組成的,這些文檔稱為主頁或頁面,它是一種超文本信息,使其聯接在一起的是超鏈接。
Web的內容保存在Web站點中,用戶可以通過瀏覽器訪問Web站點。因此,Web是一種典型的基于B/S的體系結構。
工作過程:如下圖2-1所示描述了Web的工作原理。
圖2-1 Web的工作原理
客戶端瀏覽器的主要作用是向Web服務器發出請求,當接到Web服務器傳送回來的數據以后,對這些數據進行解釋和顯示[14]。瀏覽器以URL為統一的定位格式,使用超文本傳輸協議HTTP接收采用HTML語言編寫的頁面,其基本結構如下圖2-2所示:
圖2-2 使用超文本傳輸協議HTTP接收采用HTML語言編寫的過程
用戶通過鍵盤或鼠標發出請求,該請求由瀏覽器中的控制器接收、檢查并分析用戶輸入,根據用戶請求執行相應動作。如果用戶請求可以在本機解決,例如瀏覽已存在本機的頁面,則輸出到HTTP解釋器或其他解釋器,解釋后通過驅動程序送入顯示器顯示。如果用戶請求不能在本機解決,則通過HTTP客戶機或其他客戶機及網絡界面與遠程服務器通信,由遠程服務器解決用戶請求,將用戶需要的HTML文檔送回,然后通過HTTP解釋器或其他解釋器,解釋后通過驅動程序送入顯示器顯示。
目前兩大主流瀏覽器是Netscape公司的Netscape Communication(簡稱NC)和Microsoft公司的Microsoft Internet Explorer(簡稱IE)。在使用這兩種瀏覽器運行HTML文檔時,只需在地址欄中輸人文件的URL即可。NC和IE這兩大瀏覽器可執行的程序并不完全相同
2.3MyEclipse簡介
MyEclipse企業級工作平臺(MyEclipse Enterprise Workbench ,簡稱MyEclipse)是對EclipseIDE的擴展,利用它我們可以在數據庫和JavaEE的開發、發布以及應用程序服務器的整合方面極大的提高工作效率。它是功能豐富的JavaEE集成開發環境,包括完備的編碼、調試、測試和發布功能,支持HTML,Struts,JSP,CSS,Javascript,Spring,SQL,Hibernate[1]。
在結構上,MyEclipse的特征可以被分為7類:
1. J2EE模型
2. WEB開發工具
3. EJB開發工具
4. 應用程序服務器的連接器
5. J2EE項目部署服務
6. 數據庫服務
7. MyEclipse整合幫助
MyEclipse 是一個十分優秀的用于開發Java, J2EE的 Eclipse 插件集合,MyEclipse的功能非常強大,支持也十分廣泛,尤其是對各種開源產品的支持十分不錯。MyEclipse目前支持Java Servlet,AJAX, JSP, JSF, Struts,Spring, Hibernate,EJB3,JDBC數據庫鏈接工具等多項功能。可以說MyEclipse是幾乎囊括了目前所有主流開源產品的專屬eclipse開發工具。根據官方最新消息,MyEclipse 2013已經正式發布!MyEclipse 2013支持HTML5、JQuery和主流的Javascript 庫。隨著MyEclipse 2013支持Html5,你可以添加音頻、視頻和API元素到你的項目,從而為移動設備創建復雜的Web應用程序。你甚至還可以通過HTML5 可視化設計器設計令人難以置信的用戶界面。同時,隨著MyEclipse 2013支持JQuery,你可以通過插件提升性能,并添加動畫效果到設計中。myeclipse 10.0系列 主要 有以下 改進:首先 在eclipse 3.7.2(Indigo) 基礎上構建 最大的特色是 :? 完全支持 Java EE 6With MyEclipse 10, you can now take advantage of Java EE 6features, such as:·??????? Servlet 3.0·??????? JSF 2.0·??????? JPA 2.0·??????? EJB 3.1·??????? JAX-RS 1.1其他的改進:1. 支持maven3.02. 支持 64-bit Windows support3. WebSphere Portal Server 7 and WebSphere 84. JRebel for MyEclipse5. EJB Deployment Descriptor Editor6. Extended DB2 Support7. Extended Application Client Project Support8. Instant Deployment (Experimental)9. EJB Deploy10.J2EE Connector Architecture (JCA)2.4Tomcat簡介
Tomcat 服務器是一個免費的開放源代碼的Web 應用服務器,屬于輕量級應用服務器,在中小型系統和并發訪問用戶不是很多的場合下被普遍使用,是開發和調試JSP 程序的首選。對于一個初學者來說,可以這樣認為,當在一臺機器上配置好Apache 服務器,可利用它響應對HTML 頁面的訪問請求。實際上Tomcat 部分是Apache 服務器的擴展,但它是獨立運行的,所以當你運行tomcat 時,它實際上作為一個與Apache 獨立的進程單獨運行的。
訣竅是,當配置正確時,Apache 為HTML頁面服務,而Tomcat 實際上運行JSP 頁面和Servlet。另外,Tomcat和IIS等Web服務器一樣,具有處理HTML頁面的功能,另外它還是一個Servlet和JSP容器,獨立的Servlet容器是Tomcat的默認模式。不過,Tomcat處理靜態HTML的能力不如Apache服務器。目前Tomcat最新版本為8.0.0-RC1 (alpha) Released。
Tomcat 很受廣大程序員的喜歡,因為它運行時占用的系統資源小,擴展性好,支持負載平衡與郵件服務等開發應用系統常用的功能;而且它還在不斷的改進和完善中,任何一個感興趣的程序員都可以更改它或在其中加入新的功能。
2.5Struts 2框架
Struts 2是由出色穩定的struts1和webwork框架整合而來,吸取了兩大框架的優點,提高了開發效率和規范性,減少了非常多的冗余代碼,更好的實現了mvc架構,層與層之間的關系更加明確直接,解除了與servlet的強耦合性,無需啟動服務器便可以進行單元測試,功能測試,極大的節約了我們的時間。是在 struts 1和WebWork的技術基礎上進行了合并的全新的Sruts 2框架。其全新的Struts 2的體系結構與Struts 1的體系結構差別巨大。Struts 2以WebWork為核心,采用攔截器的機制來處理用戶的請求,這樣的設計也使得業務邏輯控制器能夠與ServletAPI完全脫離開,所以Struts 2可以理解為WebWork的更新產品。雖然從Struts 1到Struts 2有著太大的變化,但是相對于WebWork,Struts 2的變化很小。
Struts2的意義
更科學的管理:
? 使用xml文件管理程序文件對應的關系,使我們的維護更加的簡潔更加的安全和更加的迅速。
更安全的操作:
? 1.安全的線程機制:每個action都是獨立的,在我們使用JSP和servlet開發的時候,由于servlet是單列模式,導致線程是不安全的,在編程的時候應多加注意,才能避免線程混亂的情況。而strut2的action對于每一個請求就會生成對應的一個實例,所以線程是安全的,簡化了開發,安全性也提高了不少。
? 2.防止數據重復提交:token令牌機制,該機制可以有效的防止用戶因網速或者電腦卡等因素導致的統一表單數據被重復提交了兩次甚至更多遍的問題,比如說注冊界面,用戶在填寫完信息后點擊提交按鈕,由于網絡阻塞而導致的電腦卡頓現象,用戶不耐煩有反復的點擊提交按鈕,導致重復提交的現象。
?先進的編程思路
?面向切面編程:攔截器(相當于過濾器的一種,不編寫重復的代碼,減少代碼的冗余
?使用filter作為控制器的MVC應用實戰
?流程概念分析
圖2-3 servlet的主要流程圖
圖2-4 struts2的主要流程圖
? 可以看出在struts2中用filter代替了servlet的作用,這是struts2的核心思想
?本項目中到struts2的核心程序段為:
?? 在web.xml中配置filter
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
Struts.xml的代碼
!--該標簽用于Struts默認行為標簽 -->
<!-- 開發模式下使用,這樣可以打印出更加詳細的錯誤信息 -->
<constant name="struts.devMode" value="true" />
<!-- 默認我們struts2的請求后綴是action,如果我們不配置該元素,我們至攔截action文件,如果我們配置了,可以攔截action/do的wenjian -->
<constant name="struts.action.extension" value="do, action"/>
<constant name="struts.multipart.saveDir" value="d:/test"></constant>
<constant name="struts.configuration.xml.reload" value="true"/>
<!-- 該標簽為包標簽,用于區分不同的請求文件標簽 -->
<package name="admin" extends="struts-default" namespace="/admin">
<action name="usersmanager"? class="com.daowen.action.UsersAction">
</action>
圖2-4-1 struts2的核心程序段
對于Struts1框架而言,由于與JSP/Servlet耦合非常緊密,因而導致了一些嚴重的問題。首先,Struts1支持的表現層技術單一。由于Struts1出現的年代比較早,那個時候沒有FreeMarker、Velocity等技術,因此它不可能與這些視圖層的模版技術進行整合。其次,Struts1與Servlet API的嚴重耦合,使應用難于測試。最后,Struts1代碼嚴重依賴于Struts1 API,屬于侵入性框架。
圖2-5 Http請求流轉流程圖
從目前的技術層面上看,出現了許多與Struts1競爭的視圖層框架,比如JSF、Tapestry和SpringMVC等。這些框架由于出現的年代比較近,應用了最新的設計理念,同時也從Struts1中吸取了經驗,克服了很多不足。這些框架的出現也促進了Struts的發展。目前,Struts已經分化成了兩個框架:第一個是在傳統的Struts1的基礎上,融合了另外的一個優秀的Web框架WebWork的Struts2。Struts2雖然是在Struts1的基礎上發展起來的,但是實質上是以WebWork為核心的。Struts2為傳統的Struts1注入了WebWork的先進的設計理念,統一了Struts1和WebWork兩個框架。Struts1分化出來的另外一個框架是Shale。這個框架遠遠超出了Struts1原有的設計思想,與原有的Struts1關聯很少,使用了全新的設計思想。Shale更像一個新的框架而不是Struts1的升級。
2.6 Spring框架
Spring就是為了解決企業的復雜性而創建的,它的特性之一就是基于分層架構,分成架構可以讓我們決定使用哪個組件而開發的,同時也為我們J2EE的開發創建了條件。Spring是一個輕量級級控制反轉(ioc)和面向切面(aop)的容器框架,他主要是為了解決企業應用開發的復雜性而誕生的:它的目的就是為了解決企業開發的復雜性,它的主要功能為使用基本的JAVABEAN來代替EJB,并且他提供了更多的企業級應用功能,它的適用范圍是JAVA的任何應用,spring不簡單單的是服務器端的開發,從簡單性,可測試性,低耦合性的角度而言,任何的java應用都可以從spring中受益,sping的核心是面向切面和控制反轉,spring存在有它得天都后的優勢:
1:它定位的領域是許多framework而沒有的,spring致力于一個統一的方法來管理你的業務對象
2:spring是全面的和模塊化的,sping是分層結構的,這意味著你可以使用孤立與它的任何一個成分,它的框架依然是內在的和穩定的。
3:它的設計是從底部幫助你易于測試的代碼。Spring是測試驅動的理想的framework。
Spring有以下優點:
1:低侵入式設計,代碼污染率極低
2:write once,Run anywhere
3:DI有效的降低了耦合度
4:aop提供了通用任務的管理
5:ORM和DAO簡化了數據庫的訪問
6:高度的開放性,并不強制,它的這種優點貫穿與表現層,業務層,邏輯層,在實際的開發過程中,并不強制依賴spring。作為開發者你可選擇使用spring一部分框架或者全部框架來進行你的全部開發。
?正因為SPRING有上述優點和好處,可以給我們帶來很多的好處,例如:可以有效的解決組織中間層對象,還可以減少許多對單列模式的使用。可以使用統一的配置文件,易于單元測試以及促進良好的編程習慣,減少編程代價。
spring特點:
Spring的核心模塊:
??????????????????????? 圖2-6 Mvc模塊核心圖
1.軟件應用分層架構
標準三層架構:
1:數據訪問層:主要是對原始數據(數據庫或者文本文件等存放數據的形式)的操作層,而不是指原始數據,也就是說,是對數據的操作,而不是數據庫,具體為業務邏輯層或表示層提供數據服務.
2:業務邏輯層:主要是針對具體的問題的操作,也可以理解成對數據層的操作,對數據業務邏輯處理,如果說數據層是積木,那邏輯層就是對這些積木的搭建。具體的講主要負責對數據層的操作。也就是說把一些數據層的操作進行組合。
3:表示層:主要表示WEB方式,如果邏輯層相當強大和完善,無論表現層如何定義和更改,邏輯層都能完善地提供服務。主要對用戶的請求接受,以及數據的返回,為客戶端提供應用程序的訪問。
,對于spring框架來說,就是由spring來負責生命周期和對象間的關系。
傳統開發模式:對象之間相互依賴。
IOC開發模式:ioc容器安排對象之間的依賴。
Ioc的另外的名字叫做依賴注入(DepenDency Injection),所謂的依賴注入,就是由IOC容器在運行期間,動態地將某種依賴關系注入到對象之中。所以,依賴注入和控制反轉(IOC)是從不同的角度的描述的同一件事情。就是只通過引入ioc容器,利用依賴關系注入的方式,實現對象之間的解耦。
Ioc在對象過程中不會對業務對象構成很強的侵入性,使用ioc之后,對象之間具有更好的可實現性,可重用性和可擴展性:
降低對象之間的耦合度
提高開發效率和產品質量
統一標準,提高產品的復用性
模塊具有熱插拔特性。
圖2-7 普通處理方法
圖2-8 spring處理方法
???? Spring core(包含spring基本工具類,其它組件都會使用到這個包里的類,是其它組件的核心)
Java bean(是所有都需要用到的,它包含了訪問配置文件,創建和管理bean,以及控制反轉和依賴注入操作)
Spring aop(包含了使用aop特性時所使用到的類)
Spring context(為spring的核心提供了大量的擴展,能夠找到使用application context的全部類)。
優點:
??? 1:開發人員可以只關注整個結構中的其中某一層;
??? 2:可以很容易的用新的實現來替換原有層次的實現;
??? 3:可以降低層與層之間的依賴;
??? 4:有利于標準化;
??? 5:利于各層邏輯的復用。
??? 6:結構更加的明確
??? 7:在后期維護的時候,極大地降低了維護成本和維護時間
缺點:
??? 1:降低了系統的性能。這是不言而喻的。如果不采用分層式結構,很多業務可以直接造訪數據庫,以此獲取相應的數據,如今卻必須通過中間層來完成。
??? 2:有時會導致級聯的修改。這種修改尤其體現在自上而下的方向。如果在表示層中需要增加一個功能,為保證其設計符合分層式結構,可能需要在相應的業務邏輯層和數據訪問層中都增加相應的代碼。
??? 3:增加了開發成本。
2 Spring相關概念
1:輕量級的容器:
spring容器幫我們管理業務邏輯層,里邊有很多業務邏輯對象,有對象就有對象的生命周期的管理(創建,銷毀).
輕量級:容器給予的業務邏輯對象多少種服務?spring給用戶提供的服務完全由用戶自己決定,spring想用什么服務自己開啟使用。但是重量級的都是只要你用就把所有的服務都給你,不能自己定制。
spring容器從來不能獨立運行,一定借助于其他容器啟動,或者借助web容器啟動,或者ejb容器啟動。??? ???
特點:
應用模塊之間耦合度小,組件都是可重用的,都是各自打包的
2:why spring?
1)動態解藕,方便開發,面向接口設計
通過Spring提供的IoC容器,我們可以將對象之間的依賴關系交由Spring進行控制,避免硬編碼所造成的過度程序耦合。有了Spring,用戶不必再為單實例模式類、屬性文件解析等這些很底層的需求編寫代碼,可以更專注于上層的應用
2)方便程序的測試TDD(Test-Driven Development)
可以用非容器依賴的編程方式進行幾乎所有的測試工作,在Spring里,測試不再是昂貴的操作,而是隨手可做的事情。
3)降低Java EE API的使用難度
Spring對很多難用的Java EE API(如JDBC,JavaMail,遠程調用等)提供了一個簡單的封裝層,通過Spring的簡易封裝,這些Java EE API的使用難度大為降低。
4)方便集成各種優秀框架
Spring不排斥各種優秀的開源框架,相反,Spring可以降低各種框架的使用難度,Spring提供了對各種優秀框架(如Struts,Hibernate、Hessian、Quartz)等的直接支持。
?Aop(aspect-oriented programming )面向方面的程序設計,是一種比較新穎的編程思想,aop將程序分為兩個部分,核心業務邏輯以及橫向的業務邏輯。在spring中提供了豐富的業務支持,允許通過分離業務的業務邏輯和系統級的服務,進行類聚性的開發Aop是對oop的一種延續,也是對oop的一種補充,oop是一種靜態的過程,而aop是一種動態的過程,aop的主要功能為系統級別的功能,列入:系統日志,性能統計,安全控制,事務處理,異常處理等等這些主要功能,將實現上述功能的代碼從業務邏輯層中劃分出來,將它們獨立到非業務指導性的代碼當中,處理這些代碼的時候不影響其它代碼的處理。使用切面代碼我們可以將面向切面的代碼植入程序,可以有效防止代碼的混亂。Aop專門用于處理系統中分布于各個模塊中交叉關注點的問題,在JAVAEE應用中,常常通過aop來處理一些具有橫切性質的系統級服務,如事務管理,安全檢查,緩存,對象池管理等等,aop已經成為一種非常常用的解決方案。
Aop代理其實是由aop動態生成的一個對象,該對象可作為目標對象使用,aop代理所包含的方法與目標對象方法如下圖所示
圖2-10 aop代理所包含的方法與目標對象方法
6)聲明式事務的支持
在Spring中,我們可以從單調煩悶的事務管理代碼中解脫出來,通過聲明式方式靈活地進行事務的管理,提高開發效率和質量。
7)對異常的處理方式,所有的都轉換成Unchecked的。
8)它不是一個一體化的解決方案。?
9)良好的設計,容易擴展,很多可重用的組件
3.Spring核心組件(我們主要學習的是IOC和AOP模塊)
(1)、Spring Core(IOC) 核心容器,提供組件的創建、裝備、銷毀
(2)、Spring Context Spring上下文,是一個接口ApplicationContext(繼承自BeanFactory接口)的實現
(3)、Spring Web容器,web應用上下文,是webApplicationContext接口的實現
(4)、Spring DAO容器,是SpringDAO 支持模塊,是為了簡化DAO的使用
(5)、Spring ORM
(6)、Spring AOP ,對AOP編程支持的模塊 [面向切面編程,擴展功能不是修改源代碼實現]
(7)、Spring MVC,類似于Spring表示層的一個框架
4.spring ioc(must):
IOC:Inversion of Control 控制反轉
?????? 一種說法:對象之間的依賴關系,由容器在運行時依據配置文件動態的建立
??? ???另一種說法:對象的控制器轉移了,轉到外部容器了,避免了代碼的糾纏,代碼更容易被維護,模板之間的耦合性降低,容易測試
??? 比如:有一個類,在類里面有方法(不是靜態的方法),調用類里面的方法,創建類的對象,使用對象調用方法,
??? 創建類對象的過程,需要new出來對象。
??? ioc是把對象的創建不是通過new方式實現,而是交給spring配置創建類對象
IoC 控制反轉意味著將你設計好的類交給容器去控制,而不是在類的內部進行控制,即控制權由應用代碼中轉到了外部容器
?? IoC:包括兩部分內容
????? DI:Dependency Injection依賴注入,組件不做定位查詢,只提供相應方法,由容器創建對象,并調用相應方法設置所需對象需要的組件
????? (不要求)DL:Dependency Loopup依賴查找,容器創建對象并提供回調接口和上下文環境給組件,需要時通過接口從容器中查找對象
?? 依賴查找,現在使用不太多。(EJB使用的更多,將對象創建好后,放到容器中。)
??? IOC解決:對象誰來創建的問題
??? DI解決:對象間的關系如何建立的問題。
?org.springframework.beans及org.springframework.context包是IOC容器的基礎。
3.系統需求分析
3.1功能需求分析
當我們對已有系統進行分析時,通過分析系統的功能和實現去確定系統的即將要達成的目的。因此,我們要收集足夠的信息去驗證我們的分析結果,在該次畢設中,我們獲取的信息大多都是從網上,書庫中了解到的。在任何的實踐中獲取的信息其實才是最可靠,最具有說服力的信息,所以,我們找到其他的寵物用品店,然后注冊成為會員來獲得有用信息。
用戶同時使用網站的注冊登錄功能,進入系統后可以獲得一部分功能。在處理消息時,可以進行對寵物資料的瀏覽,進行購買寵物用品然后對訂單進行單個購買或者取消,同時也可以清空購物車中的所有訂單,或者全部進行結賬等功能。
2.從網站的角度看:
(1)網站應該包含寵物搜索功能。
(2)訂單處理功能,確認訂單方式:
a). 電話通知方式?? ???
b).? E-mail方式
(3)管理員管理:
其任務是查看用戶訂單,查看用戶信息,并在根據查看了用戶的信息和用戶訂單之后,將商品的發送到購買者的身邊。
(4)寵物瀏覽
a). 寵物名? b).寵物類型?
c). 價格? d). 訂購號?
通過分析,系統主要分為前臺和后臺兩大模塊,前臺主要由用戶體驗使用,實現了用戶登錄、注冊、查找商品、商品類別等功能導航;后臺主要由系統管理員操作使用,用來維護系統,管理員主要實現了訂單管理、商品管理、公告管理、會員管理、用戶管理、個人信息維護等主要功能。
圖4-1 功能需求分析圖
3.2系統設計規則
無論哪個網站都要有它自己的設計規則。該系統也一樣,它的主要設計規則有:
簡單性:在實現系統的功能的同時,盡量讓系統操作簡單易懂,這對于一個系統來說是非常重要的。
針對性:該系統設計是寵物商店網站系統及后臺管理的定向開發設計,所以具有專業突出和很強的針對性。
實用性:系統接受來自系統管理員的請求,管理員可以對商品信息以及用戶信息進行增、刪、改、查等操作,具有良好的實用性。
3.3系統的可行性分析
3.3.1技術可行性
(1)硬件可行性分析
系統的硬件要求方面不存在特殊的要求,只需要在普通的硬件配置就能夠輕松的實現,只是需要確保系統的正常工作即可,以及擁有較高的效率。如果有特別低的硬件,它可以導致系統的低性能以及效率低,從而導致整個系統的運行不順暢。以目前普遍的個人計算機的配置而言,這是十分容易實現的 。因此,本系統的開發在硬件方面是可行的。
(2)軟件可行性分析
Java語言提供了一個共同的機制類似的借口動態模型,設計更集中。另外,在使用Java語言可以很容易實現模塊化和存儲信息。此外,代碼復用,也可以很好的體現。因此,考慮到系統的實際情況,選擇JAVA作為本系統開發語言的時候。通過上述分析,該系統的設計實現在軟件方面是可行的。
3.3.2經濟可行性
如今是信息化時代,信息化管理可以使寵物商品管理工作更加系統化、快速化、全面化。這樣可以為企業帶來較高的工作效益和經濟效益,在提高工作效率的基礎上,可以考慮減少工作人員的數量,本系統對計算機配置的要求不高,企業機房更換下來的低配置電腦都可以完全滿足需要,再者,企業在管理工作上的高效率和便捷性遠遠超過了開發本系統的成本,所以在經濟上具有完全的可行性。
3.3.3操作可行性
系統的登錄界面簡單和友好,采用常見的界面窗口的登錄界面,而系統的開發則采用的是較為常用的JSP技術。這些策使得用戶不需要很長的時間就能夠快速熟悉系統,并掌握系統的操作方法。此外,為了方便系統管理維護人員,用戶登錄系統后會給出了一些提示,使得整個系統更加人性化,用戶操作更簡單方便。
3.3.4 技術可行性分析
?? 本次寵物用品店系統的開發采用了java,jsp作為語言,采用了servlet,javaBeans技術,sqlserver2008作為數據庫,Web服務器的選擇是tomcat7.0。這次的開發對于一個即將畢業的我來說是一項復雜的系統工程。但是上述所用到的語言,我們在大學期間都有所接觸過,在杰普基地實習的時候也都有所接觸,所以很容易著手進行開發,但是為了保證系統開發的成功,我們只能采用工程化的系統開發方法,并且可以適當的研究有些符合標準的開發方法,并研究出一些符合工程化標準的開發方法。新研究出來的開發方法是為了加快系統開發的速度,在保證質量的同時盡可能的去降低開發的成本。對于任何一個物件來說,在質量有所保證的情況下,所消耗的資源越少越好。
3.3.5 運行可行性分析
現在的生活中計算機已經普遍到每個家庭的生活當中,自然也就越來越多的人掌握了使用計算機的基本使用方法和技能。因此,在這個信息時代中,必定會有越來越多的人利用網絡足不出戶就可以享受購物的便捷性,讓人們可以更快的了解到自己的需求。
3.3.6 經濟可行性分析
?? 寵物食品店系統給人們帶來了方便,成為一種全新的商務模式。因此,不用出門就可以在家購買寵物食品的新時尚已經到來,構建一個寵物食品店系統在經濟上是完全可行的。就本系統而言,隨著寬帶網絡進入校園,為寵物主在網絡上進行購物提供有利的條件。商家可以從中獲得利潤,兩全其美。通過以上的分析,開發寵物商品店系統是完全可行的。
3.4運行環境
本系統是一個web版的應用程序,需要在服務器上部署中間件Tomcat、Oracle數據庫,其他的客戶端通過網絡進行訪問該服務器即可。
(1)開發硬件平臺:
CPU:酷睿雙核 3.2GHZ
內存:4G以上
硬盤:320GB
(2)服務器端硬件平臺:
Web服務器參考配置:Intel? Xeon? Quad Core? E5530 80W 2.40GHz/5.8GT/8MB Cache, 2x2GB DDR3-1066MHz, 2.5in HS 146GB SAS,HS? 675W PSU, ServeRAID MR10i(RAID 5), 2*Giga Ethernet,Light Path, CD-RW/DVD Combo, 1U,3 Years Onsite Next Business Day. 146GB 10K 6Gbps SAS 2.5" SFF Slim-HS HDD x3550M2/x3650M2/HS22
數據庫服務器參考配置:Intel? Xeon? Quad Core? E5504 80W 2.00GHz/4.8GT/4MB Cache, 2x2GB DDR3-800MHz, 2.5in HS 146GB SAS, 670W PSU, ServeRAID BR10i(RAID 0,1), 2*Giga Ethernet,? DVD ROM,5U,3 Years Onsite Next Business Day. 146GB 10K 6Gbps SAS 2.5" SFF Slim-HS HDD x3550M2/x3650M2/HS22
(3) 開發軟件平臺:
操作系統:Windows7以上均可
數據庫:mysql
4.寵物網站系統概要設計
4.1系統功能結構圖
系統主要分為前臺和后臺兩大模塊,前臺主要由用戶體驗使用,實現了用戶登錄、注冊、查找商品、商品類別等功能導航;后臺主要由系統管理員操作使用,用來維護系統,管理員主要實現了訂單管理、商品管理、公告管理、會員管理、用戶管理、個人信息維護等主要功能。系統功能圖如下圖5-1所示。
圖4-1系統功能結構圖
4.2系統交互圖
系統架構類的工作流程:
1、當用戶在jsp頁面輸入了相應的信息后,對象會根據用戶的請求向請求業務處理類處理數據。
2、當業務處理類收到相應的請求后,會向相應的權限管理類對象發送驗證請求。
3、通過權限管理類驗證過后會把相應的驗證權限結果返回給相應的業務代理類。
4、業務對象會根據接受到不同的驗證權限結果進行兩部不同的處理操作:若權限不符,這返回到相應的JSP用戶界面,若權限相符,則進行到相應的業務邏輯類。
5、業務邏輯類的業務對象進行相應的業務處理。在業務處理中的數據持久化操作,靠訪問數據庫訪問類進行操作,可以進行讀取,寫入等操作,期間若發生任何的異常,交給異常處理類來完成。
6、業務代理對象類最后將最終結果返回給jsp用戶界面。
系統交互圖如下圖5-2所示:
圖4-2 系統交互圖
4.3數據庫設計
在概念設計中,通常用下面的四種方法:
自頂向下:第一,把全局概念結構的框架定義好,之后再慢慢細化;自底向上:第一,把各局部應用的概念結構定義好,之后把他們再集合起來,最后得到全局的概念結構;逐步擴張: 首先把概念結構里最核心的地方定義好,之后再向外面擴充,最后直到總體概念結構;混合策略: 把自頂向下和自底向上兩種相結合,設計一個全局概念,使用自頂向下的策略。結構的框架, 設計的各局部概念結構,以它為骨架集成,使用自底向上的策略。
在物理結構設計階段,首先應該分兩步走:
一是,在關系數據庫中,確定數據庫的物理結構,主要是指存取方法和存儲結構。時間和空間效率是對物理結構的評價。.
二是要選取存取方法,并且是正確的關系模式,存取索引方法、聚簇存取、HASH存取方法等都是常用的方法。數據庫的概念設計整體屬性E-R圖如下圖5-3所示:
圖4-3寵物商品網站系統E-R模型圖
3、數據庫設計
寵物商店網站系統ER模型中的實體轉換為物理表,得到物理表結構部分如下:
1、寵物信息表book:表中顯示了關于寵物的所有詳細信息,對于字段的屬性也有詳細的描述。可以很明顯的看出表中的內容顯示的是哪方面的信息。
圖4-1 寵物信息表booK
?2、管理員表admin:表中顯示了管理員的屬性信息。表中的字段就是管理員所擁有的詳細信息。
圖4-2 管理員表admin
3、寵物類型表booktypes:
圖4-4 寵物類型表types
?4、用戶注冊表users
圖4-5 用戶注冊表users
?5、定單詳細信息表orderbook
圖4-6 訂單詳情信息表
6、定單表num
圖4-7 訂單表
4.4系統概要設計
4.4.1系統的前臺
系統的界面按照常規的WEB界面進行設計,設計的原則是界面友好,易于操作,容易上手,盡可能的貼切用戶實際。系統主頁界面如下圖5-4所示。
圖a 狗狗商城
???????????? ?圖b?? 熱賣商品推薦????????????????? 圖c 精品推薦
圖4-4? 系統主界面圖
所有的用戶都可以進入該首頁,想要使用購買商品等功能,需要進行登錄操作,登錄時需要輸入用戶名、密碼進行驗證,通過之后才能使用這些功能。系統登錄功能界面如圖4-5所示:
圖4-5? 系統登錄界面圖
圖4-6? 系統注冊界面圖
圖4-7? 購買界面圖
圖4-8? 訂單信息圖
4.4.2系統的后臺
圖4-9? 系統后臺登錄界面圖
圖4-10? 會員管理界面圖
圖4-11? 網站后臺管理菜單
圖4-12? 商品管理界面圖
5.系統的詳細設計與功能實現
5.1應用層配置
系統采用目前流行的Struts2框架進行開發。先來看看Struts2框架是如何配置到應用程序中的。
在WEB-INF/web.xml文件的配置代碼如下:
< <bean type="org.apache.struts2.dispatcher.multipart.MultiPartRequest"
???? name="myRequestParser" class="com.daowen.util.RequestParseWrapper"
???? scope="default" optional="true" />
??? <package name="admin" extends="struts-default" namespace="/admin">
??? <action name="usersmanager"? class="com.daowen.action.UsersAction">
??? </action>
????? <action name="friendlinkmanager" class="com.daowen.action.FriendlinkAction">
?? ??</action>
?? ???<action name="jiaodiantumanager" class="com.daowen.action.JiaodiantuAction">
????? </action>
??????? </action>
???????? <action name="sysconfigmanager" class="com.daowen.action.SysconfigAction">
??????? </action>
5.2登錄功能的實現
圖5-1 登錄信息
public class LoginAction extends Action {
??? public ActionForward execute(ActionMapping mapping, ActionForm form,
??? ??? ??? HttpServletRequest request, HttpServletResponse response) {
??? ??? ??? try {
??? ??? ??? response.setContentType("application/x-www-form-urlencoded; charset=UTF-8");
??? ??? ??? List userlist=null;
??? ??? ??? Session? s=HibernateSessionFactory.getSession();
??? ??? ??? Transaction t=s.beginTransaction();
??? ??? ??? String username=request.getParameter("username");
??? ??? ??? String password=request.getParameter("password");
??? ??? ??? String action=request.getParameter("action");
??? ??? ??? System.out.println("action="+action+"username="+username+"password="+password);
??? ??? ??? SQLQuery query=s.createSQLQuery("select * from [users] where username='"+username+"'");
??? ??? ??? ??? userlist=query.list();
??? ??? ??? ??? String s1="";
??? ??? ??? ??? if(!userlist.isEmpty())
??? ??? ??? ??? s1="res=true";
??? ??? ??? ??? else
??? ??? ??? ??? s1="res=false";
??? ??? ??? ????? System.out.println("json="+s1);
??? ??? ??? ????? response.getWriter().write(s1);???? ??? ??? ???
??? ??? ??? }
5.3注冊功能的實現
圖5-3 注冊功能
<script? src="<%=SystemParam.getSiteRoot()%>/webui/jquery/jquery-1.5.2.min.js"
??? type="text/javascript"></script>
? <script? type="text/javascript" src="<%=SystemParam.getSiteRoot() %>/webui/jquery/jquery.validate.min.js"></script>
??? <script type="text/javascript"? src="<%=SystemParam.getSiteRoot() %>/webui/jquery/jquery.metadata.js" ></script>
??? <script type="text/javascript"? src="<%=SystemParam.getSiteRoot() %>/webui/jquery/messages_cn.js" ></script>???
?? <script type="text/javascript">
?????? $(function(){
??? ???$.metadata.setType("attr","validate");
??? ???$("#form1").validate();
?????? })
5.4商品管理功能的實現
圖5-4 商品管理模塊
??? <tr>
??? ??? ??? ??? <td align="right">商品編號:</td>
??? ??? ??? ??? <td><input name="spno"
??? ??? ??? ??? ??? validate="{required:true,messages:{required:'請輸入商品編號'}}"
??? ??? ??? ??? ??? value="${requestScope.shangpin.spno}" class="input-txt" type="text"
??? ??? ??? ??? ??? id="spno" />
??? ??? ??? ??? </td>
??? ??? ??? </tr>
??? ??? ??? <tr>
??? ??? ??? ??? <td align="right">商品類別:</td>
??? ??? ??? ??? <td><input type="hidden" name="sptype" /> <input type="hidden"
??? ??? ??? ??? ??? name="sptypeid" /> <web:dropdownlist id="sptype"? cssclass="dropdown"
??? ??? ??? ??? ??? ??? value="${requestScope.shangpin.sptypeid}"
??? ??? ??? ??? ??? ??? datasource="${sptype_datasource}" textfieldname="mingcheng"
??? ??? ??? ??? ??? ??? valuefieldname="id">
??? ??? ??? ??? ??? </web:dropdownlist></td>
??? ??? ??? </tr>
??? ??? </div>
5.5訂單管理模塊的實現
訂單管理模塊主要實現管理員對進行中的訂單、歷史訂單信息的查詢,進行退款、拒絕、介紹并發貨等操作。訂單管理模塊如圖6-2所示。
圖5-5 訂單管理模塊
<link href="<%=SystemParam.getSiteRoot() %>/webui/treetable/skin/jquery.treetable.theme.default.css" rel="stylesheet"
??????? type="text/css" />
?????? <script src="<%=SystemParam.getSiteRoot() %>/webui/treetable/js/jquery.treetable.js" type="text/javascript"></script>
??????? <script src="<%=SystemParam.getSiteRoot() %>/webui/combo/combo.js" type="text/javascript"></script>
??? ??? <script type="text/javascript">
??? ??? ??? $(function() {
??? ??? ??? ??? $(".ui-record-table").recordTable();
??? ??? ??? ??? $("#btnDelete").click(function(){
??? ??? ??? ??????? if($(".check:checked").length<1)
??? ??? ??? ??????? {
??? ??? ??? ?????????? $.dialog.alert("請選擇需要刪除的記錄");
??? ??? ??? ?????????? return;
??? ??? ??? ??????? }
5.6會員管理模塊的實現
圖5-6 會員管理模塊
<head>
<title>會員信息</title>
<link href="<%=SystemParam.getSiteRoot()%>/admin/css/common.css"
??? rel="stylesheet" type="text/css" />
<link href="<%=SystemParam.getSiteRoot()%>/admin/css/web2table.css"
??? rel="stylesheet" type="text/css" />
<script type="text/javascript"
??? src="<%=SystemParam.getSiteRoot()%>/webui/jquery/jquery-1.9.0.js"></script>
<link
??? href="<%=SystemParam.getSiteRoot()%>/webui/artDialog/skins/default.css"
??? rel="stylesheet" type="text/css" />
<script
??? src="<%=SystemParam.getSiteRoot()%>/webui/artDialog/jquery.artDialog.source.js"
??? type="text/javascript"></script>
<script
??? src="<%=SystemParam.getSiteRoot()%>/webui/artDialog/iframeTools.source.js"
??? type="text/javascript"></script>
6.測試與性能分析
6.1系統測試目的與意義
(1)測試的重要性
不管是什么技術,以及如何使用的方法,但該軟件,該軟件將仍然是放錯了地方。減少引入的錯誤,您可以使用新的語言,先進的開發方法,改進開發過程,但這是不可能完全消除軟件錯誤,由于需要進行測試,以找出引入的錯誤,你必須通過測試誤差估計密度在軟件中。對于可行性研究而言,其任務就是用最低的代價在最短的時間內做出一個判斷當前系統實現后的價值。為了避免在花費了大量的資源之后才發現該功能的實現完成不了或者完成了之后也沒有多少實用性的價值。從而造成更多的浪費。
所有工程學科的基本單元是一個測試,這是軟件發展的一個非常重要的組成部分。測試陪同,從編程本身的日子。統計顯示,在一個典型的軟件開發項目,往往占總工作量的測試軟件的軟件開發工作量的40%以上。但成本為這個測試是30%至50%的軟件開發總成本的。如果考慮把維護階段包含在內,在討論整個軟件的生存期時,有所降低的也許是測試的成本比例,但維護工作,實際上是相當于第二次的開發,甚至是多次開發,許多測試工作也一定包含在其中。這次的開發對于一個即將畢業的我來說是一項復雜的系統工程。但是上述所用到的語言,我們在大學期間都有所接觸過,在杰普基地實習的時候也都有所接觸,所以很容易著手進行開發,但是為了保證系統開發的成功,我們只能采用工程化的系統開發方法,并且可以適當的研究有些符合標準的開發方法,并研究出一些符合工程化標準的開發方法。新研究出來的開發方法是為了加快系統開發的速度,在保證質量的同時盡可能的去降低開發的成本。對于任何一個物件來說,在質量有所保證的情況下,所消耗的資源越少越好。
在實踐中,因為還有一個感知測試這是不正確的和錯誤的態度,難以在軟件測試往往過高或敷衍,現在的生活中計算機已經普遍到每個家庭的生活當中,自然也就越來越多的人掌握了使用計算機的基本使用方法和技能。因此,在這個信息時代中,必定會有越來越多的人利用網絡足不出戶就可以享受購物的便捷性,讓人們可以更快的了解到自己的需求。
包括:
假設測試,也很難帶來成就試驗人員從某種意義上說,作為設計和編碼一樣容易取得進展:
那個戒指是不是建立在自然破裂,找到軟件錯誤作為測試的目標,他們負責的負面測試工作中發現錯位;
測試可以不感興趣,沉悶;
測試工作是困難的,艱苦的工作;
準備他們的信心盲目的過程,發現錯誤后,所表達的意見對他們的發展能力的擔憂。
軟件測試,這種觀點是不賺錢,提高軟件產品的質量,必須澄清認識,態度。
(2)測試的目的
如果你說,要找出盡可能測試的目的是錯誤的,那么測試應直接向軟件的一部分,是更復雜或更錯誤之前。
該過程發現錯誤和軟件測試的執行情況;
該測試是為了證明其中的一個節目,而不是沒有錯誤的認證程序;
這就是它沒有被發現的錯誤,這是一個很好的例子
發現一個測試沒有找到一個成功的測試。
為了測試錯誤,因為這個視圖的中心可以提醒人們,而不是正常運作的演示軟件。但可能會非常棘手,真的只是給這純粹是為軟件測試是為了發現錯誤,找不到錯誤的測試,其實不是這樣的。
首先,測試,而不是目的只是為了找到錯誤。但是,因誤差分析和分配可以幫助項目經理更好的軟件過程發現現在是在一個殘疾的存在使用,以方便日后的改進。在同一時間,根據該分析還可以幫助我們設計的目標檢測方法,以提高測試的效率。其次,沒有在測試中發現的錯誤也是有價值的評估試驗的質量的方式來完成測試。
6.2測試環境
?????? WIN7 64位,FireFox,TOMCAT6,JDK1.6
6.3測試過程
在測試之初,由于將數據庫中的數據是隨便輸入,沒有實用性,為了使系統更加完善,在系統測試的過程中,本系統將一開始編程隨便輸入的數據全部清理后,輸入了一些有效的測試數據,這樣可以更真實的反映系統的功能實現情況。
測試的每個步驟在邏輯上與前一個步驟都有關聯。準確來說是上一個步驟的繼續。每個模塊寫的是不同的功能,多個模塊,就相對于多個功能組成了一個系統,而多個小的系統組成了一個大型的系統,所以,大型的軟件系統的測試是分布進行的,就類似如下所述:
(1)模塊測試:該測試中發現的一般是編碼和詳細設計的錯誤。
(2)系統測試:該測試中發現的一般是軟件設計中的錯誤,也可能發現需求說明中的錯誤。
(3)驗收測試:該測試中發現的一般是系統需求說明書中的錯誤。
這樣不斷發現問題,經過反復的測試、調試,把問題一個個的解決,最終系統可以正常運行。
6.4測試的主要內容及結果
(1)單元測試
單元測試是檢查每個軟件中單位最小的,通過檢測去發現原來定義該模塊的功能說明和本身所需要實現的實際的功能是不符合要求的狀況,或者檢測出模塊的錯誤。
身份認證時候要保證在以下輸入情況時候系統能夠健康運行:
- 輸入的用戶ID:不存在
- 輸入的用戶ID:重復
- 輸入的用戶ID:輸入信息為空。
- ?輸入的用戶ID:與密碼不相符合。
- ?輸入的用戶的信息 格式不正確
(2)集成測試
(3)確認測試
(4)系統測試
測試結果:注冊測試:輸入的錯誤信息符合要求如圖
圖7-1 注冊失敗情
圖7-2 注冊成功情況
圖7-2 登錄失敗情況
| 模塊名稱 | 測試用例 | 預期結果 | 實際結果 | 是否通過 |
| 登錄模塊 | 用戶名:null?? 密碼:null? | 彈出錯誤提示,請輸入用戶名 | 登錄失敗,提示請輸入用戶名 | 通過 |
| 登錄模塊 | 用戶名:m1 密碼:null? | 彈出錯誤提示,請輸入密碼 | 失敗,提示輸入密碼 | 通過 |
| 登錄模塊 | 用戶名:m1 ?密碼:1 | 彈出錯誤提示,用戶名或者密碼錯誤 | 登錄失敗,提示用戶名或者密碼錯誤 | 通過 |
| 商品管理模塊 | 添加商品信息后提交 | 添加成功 | 錄入成功 | 通過 |
| 用戶密碼修改 | 隨意一個用戶登錄,修改密碼 | 修改成功,退出后用新密碼登錄,并登錄成功 | 修改成功 | 通過 |
總結與展望
本文主要闡述了如何利用JSP技術的Struts2框架開發一個性能優化、可擴展性強和安全可靠的寵物商店管理系統。系統主要分為前臺和后臺兩大模塊,前臺主要實現了用戶登錄、注冊、查找商品、商品類別等功能導航;后臺主要實現了訂單管理、商品管理、公告管理、會員管理、用戶管理、個人信息維護等主要功能。然后根據這些功能進行分析設計,對所有到的技術Struts2框架就行簡要的介紹。接著進行需求分析的描述。接著是概要設計和詳細設計。描述這個系統的部分功能的實現方案及過程。
本設計所實現的是一個寵物商品系統,主要介紹了JSP,Struts2技術。系統按照總體設計、數據庫設計、各個模塊設計和代碼分析,寵物商品系統的基本功能已得到實現。由于時間及本人所學有限,該系統還有許多地方需要改進,并且還有許多自己未起到的功能,本人會在以后的學習過程中進一步加強和完善。
本系統具有以下優點:
1、該系統可以運行在多個操作系統平臺(Windows 7和Windows 8),數據庫采用mysql,開發語言選擇Java,可移植性好。
2、系統的用戶權限進行劃分,分為會員用戶和管理員,不同的用戶具有不同的操作權限。這不僅方便了用戶,也保證了系統的安全性。
3、該系統界面簡單,操作方便,容易使用。
但也存在以下缺點:
1、界面跳轉復雜,接口不能被刷新,可以改進。
2、功能比較簡單,沒有進一步提高一些選修的程序等,不能更好的為用戶提供服務。
3、數據庫設計有冗余,需要進一步優化。
參考文獻
[1] 劉志誠.JSP程序設計實例教程.北京:人民郵電出版社,2009.5?
[2 ]孫衛琴.精通Struts:基于MVC的JavaWeb設計與開發.北京:電子工業出版社,2004.11
[3] 李剛.整合Struts+hibernate+Spring應用開發詳解.北京:清華大學出版.
[4] 張桂元、賈燕楓.Struts開發入門與項目實踐.北京:人民郵電出版社,2005.12?
[5]孫衛琴.Tomcat與Java Web開發技術詳解.北京:電子工業出版社,2003.11
[6] 吳其慶.Java模塊設計實例經典.北京:冶金工業出版社2004.6?
[7] 劉斌.《精通Java Web整合開發》,電子工業出版社,2007.11?
[8] [美]Rogers Cadenhead. Java編程入門經典.梅興文譯.第4版.北京:人民郵電出版社,2007
[9] 趙文靖.Java程序設計基礎與上機指導.北京:清華大學出版社,2006
[10] 趙毅.跨平臺程序設計語言——Java.西安:西安電子科技大學出版社,2006
[11] 王路群.Java高級程序設計.北京:中國水利水電出版社,2006
[12]雍俊海.Java程序設計習題集.北京:清華大學出版社,2006
[13] 朱福喜.Java語言習題與解析.北京:清華大學出版社,2006
[14] 吳其慶.Java程序設計實例教程.北京:冶金工業出版社,2006
- servlet和JSP技術概述
1.1 servlet的功用
Servlet是運行在Web服務器或應用服務器上的Java程序,它是一個中間層,負責連接來自Web瀏覽器或其他HTTP客戶程序的請求和HTTP服務器上的數據庫或應用程序。
?? ?1.2 動態構建網頁的原因
· 網頁基于客戶發送的數據
?? 例如,搜索引擎生成的頁面,以及在線商店的訂單確認頁面,都要針對特定的用戶請求而產生。在沒有讀取到用戶提交的數據之前,我們不知道顯示什么,要記住,用戶提交兩種類型的數據:顯示(即HTML表單的數據)和隱式(即HTTP請求的報頭)。兩種輸入都可用來構建輸出頁面。基于cookie值針對具體用戶構建頁面的情況尤其普遍。
· 網頁由頻繁改變的數據導出
?? 如果頁面需要根據每個具體的請求做出相應的更改,當然需要在請求發生時構建響應。但是,如果頁面周期性地改變,我們可以用兩種方式來處理它:周期性地在服務器上構建新的網頁(和客戶請求無關),或者僅僅在用戶請求該頁面時再構建。具體應該采取哪種方式要依具體情況而定,但后一種方式常常更為方便,因為它只需簡單地等待用戶的請求。例如,天氣預報或新聞網站可能會動態地構建頁面,也可能會返回之前構建的頁面(如果它還是最新的話)。
· 網頁中使用了來自公司數據庫或其他服務器端數據源的信息
?? 如果數據存儲在數據庫中,那么,即使客戶端使用動態Web內容,比如applet,我們依舊需要執行服務器端處理。想象下,如果一個搜索引擎網站完全使用applet,那么用戶將會看到:“正在下載50TB的applet,請等待!”。顯然,者很愚蠢:這種情況下,我們需要與數據庫(二層結構)更靈活,也更安全,而性能上的損失很少甚至沒有。畢竟數據庫調用通常是對速度影響最大的步驟,因為經過Web服務器不會帶來性能上的明顯降低。實際上,三層結構常常更快,因為中間層可以執行高緩存和連接共享。
理論上講,servlet并非只用于處理HTTP請求的Web服務器或應用服務器,它同樣可以用于其他類型的服務器。例如,servlet能夠嵌入到FTP或郵件服務器中,擴展它們的功能。而且,用于會話啟動協議服務器的servlet API最近已經被標準化(參見http://jcp.org/en/jsr/detail?Id=116)。但在實踐中,servlet的這種用法尚不流行,在此,我們只論述了HTTP servlet。
2.1 下載和安裝Java軟件開發工具包
您可能早已安裝了Java平臺,如果尚未安裝,那么第一步就是安裝Java平臺,當前版本的servlet和JSP API需要Java 2平臺(標準版,J2EE,或企業版,J2EE)。如果不準備使用J2EE的特性,如Enterprise JavaBeans(EJB)或Java消息服務(Java messaging service,JMS),我們建議使用標準版。服務器會提供向Java 2標準版加入servlet和JSP支持所需的類。
但我們需要Java的哪個版本呢?這要使用哪種servlet/JSP API,以及使用的是與J2EE完全兼容的應用服務器(例如:WebSphere,WebLogic或JBoss),還是獨立的servlet/JSP容器(例如Tomcat,JRun或Resin)而定。如果從零做起,我們推薦使用Java的最新版本(1.4);這樣可以得到最佳的性能,并保證與獎勵的版本兼容。但是,如果您希望了解最低的支持版本,下面是一個簡略的匯總。
·servlet 2.3和JSP(獨立服務器)。Java 1.2或更新的版本。
·J2EE 1.3(包括servlet和JSP 1.2)。Java 1.3或更新的版本。
·servlet 2.4 和JSP 2.0(獨立服務器)。Java 1.3或更新版本。
·J2EE 1.4(包括servlet 2.4和JSP 2.0)。Java 1.4或更新版本。
本書以Java 1.4為例進行介紹。
對于Solaris,Windows和Linux,可以到http://java.sun.com/j2se/1.4/獲取Java 1.4,http://java.sun.com/j2se/1.3/獲取Java 1.3.要確保下載的是SDK(軟件開發工具包),而非僅僅是JRE(Java runtime environment,Java運行環境)JRE只執行已經編譯好的Java類文件,不提供編譯器。對于其他平臺,首先檢查這些平臺是預裝了Java 2的實現,請到http://java.sun.com/cgi-bin/java-ports.cgi查詢Sun提供的第三方Java實現餓清單。
您使用的Java實現應該擁有完整的配置操作指南,但關鍵是設置環境變量PATH(不是CLASSPATH),使之指出包括Java和Javac的目錄,一般是java_install_dir/bin。例如,如果您使用windows操作系統,并將SDK安裝在C:\j2sdk1.4.1_01中,您可能需要將下面的行加入到C:\autexec.bat文件。切記,autoexec.bat只在系統啟動時執行。
Set PATH=C:\j2sdk1.4_01\bin;%PATH%
如果您想下載已經配置好的autoexec.bat文件,包含PATH設定以及本章論述的其他設置,可以到http://www.eoreservlets.com/,轉到相應的源代碼檔案文件后,選擇第2章。
在windows NT/2000/XP中,您還可以在My Computer上右擊鼠標,選擇Properties.然后選擇Advanced,再選擇Environment variables【我的電腦】|【屬性】|【高級】|【環境變量】。更新PATH的值,然后單擊OK按鈕。
在UNIX中,如果SDK安裝在/usr/j2sdk1.4.1_01中,并且您使用C外殼。您需要將下面的內容放入到.cshrc文件中。
Setenv PATH/usr/j2sdk1.4.1_01
重啟后(視窗;沒有必要的,如果你以交互方式設置的變量)或注銷并重新登錄的(UNIX),驗證Java的設置是通過打開一個DOS窗口(Windows)或shell(UNIX)并鍵入java的版本正確, javac的互助。你應該看到一個真實的結果兩次,不是一個未知的命令的錯誤消息。另外,如果您使用的集成開發環境(IDE),如Borland公司的JBuilder,Eclipse中,IntelliJ IDEA的,或Sun ONE Studio中編譯和運行一個簡單的程序,以確認該IDE知道您安裝Java。
總結
以上是生活随笔為你收集整理的基于java的宠物管理系统设计与实现(项目报告+答辩PPT+源代码+数据库+截图+部署视频)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 抖音矩阵系统,抖音矩阵系统源码,抖音SE
- 下一篇: 讯时网站管理系统通杀0DAY漏洞