![購便宜購物商城畢業(yè)論文_第1頁](http://file4.renrendoc.com/view/5a2519a8f8189d0bac57b503ac85f82a/5a2519a8f8189d0bac57b503ac85f82a1.gif)
![購便宜購物商城畢業(yè)論文_第2頁](http://file4.renrendoc.com/view/5a2519a8f8189d0bac57b503ac85f82a/5a2519a8f8189d0bac57b503ac85f82a2.gif)
![購便宜購物商城畢業(yè)論文_第3頁](http://file4.renrendoc.com/view/5a2519a8f8189d0bac57b503ac85f82a/5a2519a8f8189d0bac57b503ac85f82a3.gif)
![購便宜購物商城畢業(yè)論文_第4頁](http://file4.renrendoc.com/view/5a2519a8f8189d0bac57b503ac85f82a/5a2519a8f8189d0bac57b503ac85f82a4.gif)
![購便宜購物商城畢業(yè)論文_第5頁](http://file4.renrendoc.com/view/5a2519a8f8189d0bac57b503ac85f82a/5a2519a8f8189d0bac57b503ac85f82a5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
購便宜購物商城畢業(yè)論文目錄3464Abstract III13217第一章引言 182211.1選題意義 1261181.2.1選擇網(wǎng)上商城的原因 1151361.2.2國內(nèi)網(wǎng)上商城的現(xiàn)狀 1113881.2.3現(xiàn)今網(wǎng)上交易存在的一些的問題 15854第二章項目構(gòu)架分析與設(shè)計 2110202.1物理構(gòu)架 221642.2邏輯構(gòu)架 298742.2.1JSP+JavaBean+Servlet框架介紹 2139242.2.2JSP簡介 2240042.2.3JavaBean簡介 3284102.3開發(fā)工具 380072.3.1Myeclipse簡介 3135062.3.2TOMCAT6.0簡介 3190952.3.3mysql簡介 3276172.3.4AJAX技術(shù)簡介 324658第三章需求分析 5217023.1網(wǎng)站功能需求分析 587073.1.1用戶需求確定 568293.2數(shù)據(jù)需求分析 6120283.2.1數(shù)據(jù)庫需求分析 6227453.3技術(shù)解決方案需求分析 616851第四章總體設(shè)計 7169924.1數(shù)據(jù)庫myshopping設(shè)計 71874.1.1商品種類信息表(category)的設(shè)計 7282454.1.2管理員信息表(adminer)的設(shè)計 7126684.1.3訂單明細(xì)表(salesitem)的設(shè)計 7292684.1.4訂單信息主表(salesorder)的設(shè)計 8180014.1.5會員信息表(user)的設(shè)計 898534.1.6商品信息表(product)的設(shè)計 8211204.2前臺設(shè)計 915574.2.1前臺功能介紹 9114954.2.2前臺購物的流程圖 9313414.3后臺設(shè)計 9306844.3.1購便宜網(wǎng)上購物商城后臺功能介紹 924914.3.2購便宜商城后臺的操作流程圖 1016650第五章界面設(shè)計 10291955.1用戶注冊 10166885.1.1界面 10144555.1.2流程圖 11171395.2用戶登錄 11141395.2.1界面 11125755.2.2流程圖 12187955.3用戶登錄 1241075.3.1界面 12269625.3.2流程圖 157615.4查看商品信息 15324475.4.1界面 15178385.4.2流程圖 169195.5商品搜索 16109935.5.1界面 163035.5.2流程圖 17290635.6購物車 1783005.6.1界面 17248615.6.2流程圖 1860415.7生成訂單 18103465.7.1界面 18162215.7.2流程圖 18112055.8后臺管理 19272535.8.1界面 1970655.8.2流程圖 255570第六章開發(fā)環(huán)境配置說明 26161206.1開發(fā)環(huán)境配置 2631477第七章開發(fā)與測試 28256157.1開發(fā)流程 28178597.2測試 2911535第八章所用技巧及難點分析 29265288.1所用技巧 29259878.2難點分析 3097988.2.1分頁 30165249.1總結(jié) 36198509.2展望 3717828致謝 3730536參考文獻(xiàn) 38第一章引言隨著全球信息網(wǎng)絡(luò)的發(fā)展,Internet在世界上已不僅僅是一種技術(shù),更重要的是它已成為一種新的經(jīng)營模式,徹底改變了人類工作,學(xué)習(xí),生活,娛樂的方式,已成為國家經(jīng)濟和區(qū)域經(jīng)濟增長的主要動力。Internet正成為世界最大的公共資料信息庫,它包含無數(shù)的信息資源,所有最新的信息都可以通過網(wǎng)絡(luò)搜索獲得。更重要的是,大部分信息都是免費的,應(yīng)用電子商務(wù)可使企業(yè)獲得在傳統(tǒng)模式下所無法獲得的巨量商業(yè)信息,在激烈的市場競爭中領(lǐng)先對手。因此,本設(shè)計是通過JSP語言來實現(xiàn),一個基于B/S模式三層結(jié)構(gòu)的JSP網(wǎng)上購物網(wǎng)站網(wǎng)站。1.1選題意義網(wǎng)上商城的出現(xiàn)和發(fā)展給人們的購物帶來了全新的改變,它不但使整個購物的性質(zhì)和方式發(fā)生了翻天覆地的變化,而且也使人們整個購物流程變得高效而便捷。網(wǎng)上商城交易的個性化、自由化可為企業(yè)創(chuàng)造無限商機,降低成本,同時可以更好地建立同客戶、經(jīng)銷商及合作伙伴的關(guān)系,為此,許多公司積極拓展電子商務(wù),為客戶服務(wù),進(jìn)行價值鏈集成。1.2當(dāng)今網(wǎng)上購物的發(fā)展現(xiàn)狀1.2.1選擇網(wǎng)上商城的原因網(wǎng)上商城也是電子商務(wù)的一種典型應(yīng)用。JSP是構(gòu)建電子商務(wù)系統(tǒng)的新興技術(shù),采用JSP技術(shù),可以方便地將系統(tǒng)分離為三層:表示層、業(yè)務(wù)層及數(shù)據(jù)庫層。表示層向客戶的瀏覽器提供基于Web的顯示頁面;業(yè)務(wù)層處理客戶購物過程;數(shù)據(jù)層則提供數(shù)據(jù)存儲。采用這種層次結(jié)構(gòu)可以提高系統(tǒng)的擴展性和服務(wù)器的效率,方便開發(fā)。本設(shè)計只在滿足網(wǎng)上購物的基本功能,主要采用JSP技術(shù),設(shè)計和開發(fā)開發(fā)了一個網(wǎng)上購物系統(tǒng),具有可靠性好、可擴展性和可重用性的特點。系統(tǒng)中采用多種設(shè)計模式來提高系統(tǒng)性能:采用前臺控制器來方便地實現(xiàn)導(dǎo)航;采用復(fù)合視圖來向用戶提供Web顯示,減少了視圖中代碼的重復(fù);采用業(yè)務(wù)代表降低各層之間的耦合;并在業(yè)務(wù)層中采用值對象來向表示層提供數(shù)據(jù)。系統(tǒng)以mysql數(shù)據(jù)庫管理系統(tǒng)作為后臺數(shù)據(jù)庫,應(yīng)用于基于B/S模式的網(wǎng)上商城系統(tǒng)的設(shè)計與實現(xiàn)。1.2.2國內(nèi)網(wǎng)上商城的現(xiàn)狀在國內(nèi)的網(wǎng)上商城:(1)起步晚、數(shù)量卻非常多。雖然我國的網(wǎng)上商城起步的很晚,但是發(fā)展卻很迅速,根據(jù)某調(diào)查網(wǎng)站上的數(shù)據(jù)可知,到目前具有網(wǎng)上商城的性質(zhì)的網(wǎng)站達(dá)上萬之多,但是能夠真正滿足消費者購物要求的卻不多。(2)支付和安全認(rèn)證上的客觀技術(shù)原因,導(dǎo)致用戶完成電子商務(wù)交易變得相當(dāng)復(fù)雜,使大部分用戶還沒等交易完成就已經(jīng)退避三舍了,所以開發(fā)一個安全又操作簡單的網(wǎng)上商城難度很大。(3)由于很多網(wǎng)上商城商家一開始都想把自己的網(wǎng)站做到成亞馬遜那種境界,這導(dǎo)致很多網(wǎng)站只對商城貨物的品種和數(shù)量上加以擴張,卻不對數(shù)據(jù)查詢技術(shù)加以改進(jìn),這使很多網(wǎng)站在用戶瀏覽的時候速度很慢或者交易的過程中時間太長。(4)很多網(wǎng)上商城跟用戶的交流很少,開發(fā)出來的網(wǎng)站,卻不適合大部分用戶的要求。1.2.3現(xiàn)今網(wǎng)上交易存在的一些的問題根據(jù)CNNIC最新公布的第十二次互聯(lián)網(wǎng)調(diào)查結(jié)果顯示,用戶認(rèn)為目前網(wǎng)上交易存在的最大問題是商品質(zhì)量、售后服務(wù)及廠商信用得不到保障和安全性得不到保障,分別達(dá)到40%和25%,兩者之和達(dá)到65%。據(jù)中國消費者協(xié)會投訴部有關(guān)人士介紹,近年來,網(wǎng)上購物過程中出現(xiàn)的各種“陷阱”也已成為投訴的熱點。主要表現(xiàn)在三個方面:一是夸大其辭、虛假宣傳;二是違法提供有獎銷售服務(wù),利用巨額獎金或獎品誘惑消費者瀏覽其網(wǎng)站;三是不履行售后服務(wù)約定,對網(wǎng)上售出的商品不承擔(dān)“三包”責(zé)任。誠信是網(wǎng)上購物最值得關(guān)注的問題,營造寬松繁榮的電子商務(wù)環(huán)境,必須通過立法解決諸如交易手段和誠信等問題。要建立網(wǎng)上交易誠信機制,不是單靠評個誠信網(wǎng)站就能解決的,而是要在開展電子商務(wù)的機制上和社會配套上給予解決。第二章項目構(gòu)架分析與設(shè)計2.1物理構(gòu)架(1)網(wǎng)絡(luò)服務(wù)器操作系統(tǒng):Windows7;(2)Web服務(wù)器:Tomcat6.0;(3)后臺數(shù)據(jù)庫系統(tǒng):MySQL;(4)JSP運行環(huán)境:J2SDK1.6。2.2邏輯構(gòu)架2.2.1JSP+JavaBean+Servlet框架介紹Servlet+JSP+JavaBean(MVC)模式適合開發(fā)復(fù)雜的web應(yīng)用,在這種模式下,servlet負(fù)責(zé)處理用戶請求,jsp負(fù)責(zé)數(shù)據(jù)顯示,javabean負(fù)責(zé)封裝數(shù)據(jù)。Servlet+JSP、JavaBean模式程序各個模塊之間層次清晰,web開發(fā)推薦采用此種模式。JSP+JavaBean+Servlet三層結(jié)構(gòu)的實質(zhì)是比jsp+javaBean兩層結(jié)構(gòu)多了一個Controller:Servlet來分發(fā)客戶端瀏覽器的請求。如果把起控制器作用的Servlet的作用理解為對客戶端的請求進(jìn)行預(yù)處理對理解Servlet將有很大的幫助。通過web.xml配置文件可以找到用戶請求和特定的Servlet的對應(yīng)關(guān)系,每個Servlet都有一個特定的Servlet對象與之對應(yīng),所以說處理用戶請求的就是一個繼承自HttpServlet的Servlet對象。當(dāng)然也可以把這些處理操作完全寫在jsp程序中,不過這樣的jsp頁面可能就有成百上千行,光看代碼就是一個頭疼的事情,更不用說修改了,這對以后的代碼維護(hù)增加很大的難度,而且可能同樣的代碼會在一個頁面當(dāng)中出現(xiàn)多次,這不但降低了代碼的可讀性也降低了代碼的重用性。由此可見,通過JavaBean可以很好地實現(xiàn)邏輯的封裝、程序的易于維護(hù)等等。如果使用Jsp開發(fā)程序,一個很好的習(xí)慣就是多使用JavaBean。數(shù)據(jù)庫其工作原理如圖2-1所示。數(shù)據(jù)庫 JDBC客戶ServletView.jsp http請求 forward客戶ServletView.jsp設(shè)置Control 讀取javaBean值javaBean值圖2-1三層架構(gòu)的工作原理2.2.2JSP簡介JSP(JavaServerPages)技術(shù)使用Java編程語言編寫類XML的tags和scriptlets,來封裝產(chǎn)生動態(tài)網(wǎng)頁的處理邏輯。網(wǎng)頁還能通過tags和scriptlets訪問存在于服務(wù)端的資源的應(yīng)用邏輯。JSP將網(wǎng)頁邏輯與網(wǎng)頁設(shè)計和顯示分離,支持可重用的基于組件的設(shè)計,使基于Web的應(yīng)用程序的開發(fā)變得迅速和容易。Web服務(wù)器在遇到訪問JSP網(wǎng)頁的請求時,首先執(zhí)行其中的程序段,然后將執(zhí)行結(jié)果連同JSP文件中的HTML代碼一起返回給客戶。插入的Java程序段可以操作數(shù)據(jù)庫、重新定向網(wǎng)頁等,以實現(xiàn)建立動態(tài)網(wǎng)頁所需要的功能。JSP技術(shù)還有如下幾個優(yōu)點:
(1)一次編寫,到處運行;(2)系統(tǒng)的多平臺支持;(3)強大的可伸縮性;(4)多樣化和功能強大的開發(fā)工具支持。2.2.3JavaBean簡介JavaBean是sun微系統(tǒng)的一個面向?qū)ο蟮木幊探涌冢梢宰岄_發(fā)展建可重用應(yīng)用程序或能在網(wǎng)絡(luò)中任何主流操作系統(tǒng)平臺上配置的程序塊,稱作組件。用戶可以使用JavaBean將功能、處理、值、數(shù)據(jù)庫訪問和其他任何可以用java代碼創(chuàng)造的對象進(jìn)行打包,并且其他的開發(fā)者可以通過內(nèi)部的jsp頁面、servlet、其他JavaBean、applet程序或者應(yīng)用來使用這些對象。用戶可以認(rèn)為JavaBean提供了一種隨時隨地的復(fù)制和粘貼的功能,而不用關(guān)心任何改變。2.3開發(fā)工具2.3.1Myeclipse簡介MyEclipse企業(yè)級工作平臺(MyEclipseEnterpriseWorkbench,簡稱MyEclipse)是對EclipseIDE的擴展,利用它可以在數(shù)據(jù)庫和J2EE的開發(fā)、發(fā)布,以及應(yīng)用程序服務(wù)器的整合方面極大地提高工作效率。它是功能豐富的J2EE集成開發(fā)環(huán)境,包括了完備的編碼、調(diào)試、測試和發(fā)布功能,完整支持HTML、Struts、JSF、CSS、Javascript、SQL、Hibernate。簡單而言,MyEclipse是Eclipse的插件,也是一款功能強大的J2EE集成開發(fā)環(huán)境,支持代碼編寫、配置、測試以及除錯。2.3.2TOMCAT6.0簡介Tomcat6.0服務(wù)器是Apache組織開發(fā)的一種JSP引擎,本身具有WEB服務(wù)器的功能,可以作為獨立的WEB服務(wù)器來使用。Tomcat很受廣大程序員的喜歡,因為它運行時占用的系統(tǒng)資源小,擴展性好,支持負(fù)載平衡與郵件服務(wù)等開發(fā)應(yīng)用系統(tǒng)常用的功能,而且它還是一個免費開源的系統(tǒng),任何一個感興趣的程序員都可以更改它或在其中加入新的功能。在中小型系統(tǒng)和并發(fā)訪問用戶不是很多的場合下被普遍使用,是開發(fā)和調(diào)試JSP程序的首選。但是,在作為WEB服務(wù)器方面,Tomcat出來靜態(tài)HTML頁面時不如Apache迅速,也沒有Apache健壯,所以一般將Tomcat與Apache配合使用,讓Apache對網(wǎng)站的靜態(tài)頁面請求提供服務(wù),而Tomcat作為專用的JSP引擎,提供JSP解析,以得到更好的性能。Tomcat是Java程序,所以只要有JDK就可以使用,不需要考慮具體的操作系統(tǒng)平臺。2.3.3mysql簡介MySQL是一個開放源碼的小型關(guān)聯(lián)式數(shù)據(jù)庫管理系統(tǒng),開發(fā)者為瑞典MySQLAB公司。目前MySQL被廣泛地應(yīng)用在Internet上的中小型網(wǎng)站中。由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,許多中小型網(wǎng)站為了降低網(wǎng)站總體擁有成本而選擇了MySQL作為網(wǎng)站數(shù)據(jù)庫。與其他的大型數(shù)據(jù)庫例如Oracle、DB2、SQLServer等相比,MySQL自有它的不足之處,如規(guī)模小、功能有限(MySQLCluster的功能和效率都相對比較差)等,但是這絲毫也沒有減少它受歡迎的程度。對于一般的個人使用者和中小型企業(yè)來說,MySQL提供的功能已經(jīng)綽綽有余,而且由于MySQL是開放源碼軟件,因此可以大大降低總體擁有成本。目前Internet上流行的網(wǎng)站構(gòu)架方式是LAMP(Linux+Apache+MySQL+PHP/Perl/Python)和LNMP(Linux+Nginx+MySQL+php/perl/Python),即使用Linux作為操作系統(tǒng),Apache和Nginx作為Web服務(wù)器,MySQL作為數(shù)據(jù)庫,PHP/Perl/Python作為服務(wù)器端腳本解釋器。由于這四個軟件都是免費或開放源碼軟件(FLOSS),因此使用這種方式不用花一分錢(除開人工成本)就可以建立起一個穩(wěn)定、免費的網(wǎng)站系統(tǒng)。2.3.4AJAX技術(shù)簡介Ajax的全稱是:AsynchronousJavaScriptXML,運用異步JavaScript+XML,瀏覽器就不必等用戶請求操作,也不必更新整個窗口就可以顯示新獲取的數(shù)據(jù)。只要來回傳送采用XML格式的數(shù)據(jù),在瀏覽器里面運行的JavaScript代碼就可以與服務(wù)器進(jìn)行聯(lián)系。JavaScript代碼還可以把樣式表加到檢索到的數(shù)據(jù)上,然后在現(xiàn)有網(wǎng)頁的某個部分加以顯示。Ajax是使用客戶端腳本與Web服務(wù)器交換數(shù)據(jù)的Web應(yīng)用開發(fā)技術(shù)。這樣,Web頁面不用打斷交互流程進(jìn)行重新加裁,就可以動態(tài)地更新。使用Ajax,用戶可以創(chuàng)建接近本地桌面應(yīng)用的直接、高可用、更豐富、更動態(tài)的Web用戶界面。
第三章需求分析3.1網(wǎng)站功能需求分析3.1.1用戶需求確定1.普通用可以通過系統(tǒng)瀏覽商品(按類別)。2.普通用戶可以通過系統(tǒng)搜索商品(按大類別、商品名稱)。3.普通用戶可以通過注冊成為系統(tǒng)的會員(免費注冊)。4.會員可以通過系統(tǒng)瀏覽和搜索商品。5.會員可以通過系統(tǒng)下訂單。6.會員可以瀏覽自己以前的訂單。7.會員可以通過系統(tǒng)管理自己的信息 重設(shè)密碼8.管理員可以通過后臺進(jìn)行會員管理 =1\*GB3①會員瀏覽; =2\*GB3②會員歷史訂單瀏覽。9.管理員通過后臺進(jìn)行商品分類的管理 =1\*GB3①瀏覽、添加、刪除、修改商品種類。12.管理員通過后臺進(jìn)行商品管理 =1\*GB3①新增商品; =2\*GB3②商品刪除; =3\*GB3③商品信息修改; =4\*GB3④商品檢索。 13.管理員通過后臺進(jìn)行訂單的管理 =1\*GB3①訂單查詢; =2\*GB3②修改訂單狀態(tài)。 3.1.2系統(tǒng)業(yè)務(wù)邏輯需求分析1.會員類=1\*GB3①包裝會員信息;=2\*GB3②與訂單類是一對多的關(guān)系。2.管理員類=1\*GB3①封裝系統(tǒng)管理員。3.商品類=1\*GB3①包裝商品的信息;=2\*GB3②與訂單類是多對多的關(guān)系。4.商品類別類=1\*GB3①包裝商品的類別;=2\*GB3②與商品是一對多的關(guān)系。5.訂單類=1\*GB3①與商品是多對多的關(guān)系;=2\*GB3②與會員是多對一的關(guān)系。6.訂單明細(xì)類=1\*GB3①包裝訂單中商品的信息;=2\*GB3②與訂單是多對一的關(guān)系。3.2數(shù)據(jù)需求分析3.2.1數(shù)據(jù)庫需求分析數(shù)據(jù)庫的設(shè)計通常是以一個已經(jīng)存在的數(shù)據(jù)庫管理系統(tǒng)為基礎(chǔ)的,常用的數(shù)據(jù)庫管理系統(tǒng)有Access、SQLServer、Oracle等。根據(jù)用戶的需求和系統(tǒng)分析,本系統(tǒng)采用mysql數(shù)據(jù)庫管理系統(tǒng)。在mysql數(shù)據(jù)庫管理系統(tǒng)中建立名稱為myshopping的數(shù)據(jù)庫。這個數(shù)據(jù)庫需要提供各種信息的保存、更新和查詢,這就要求數(shù)據(jù)庫結(jié)構(gòu)充分滿足各種信息的輸出和輸入。搜集基本數(shù)據(jù)、數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)處理的流程,組成一個詳盡的數(shù)據(jù)字典,為后面的具體設(shè)計打下基礎(chǔ)。在myshopping的數(shù)據(jù)庫中,根據(jù)項目的需求建立相應(yīng)的數(shù)據(jù)表,如下:1、user(會員信息表),包括數(shù)據(jù)項:用戶ID,郵箱,密碼,聯(lián)系方式等;2、product(商品信息表),包括數(shù)據(jù)項:商品編號,商品名稱,商品描述,商品價格,商品上架日期,商品所屬種類,商品數(shù)量,商品圖片所在地址等;3、category(商品類別類),包括數(shù)據(jù)項:類別ID(自動編號),類別名稱,類別等級,上級種類ID;4、adminer(管理員類),類別ID、用戶名、密碼;5、salesitem(訂單信息明細(xì)表),包括數(shù)據(jù)項:編號,商品編號,單價,數(shù)量,訂單編號等。6、salesorder(訂單信息主表),包括數(shù)據(jù)項:訂單編號,用戶編號,訂單標(biāo)識符(是否已發(fā)貨),商品總價等;3.3技術(shù)解決方案需求分析 (1)WebServer–Tomcat6.0; (2)DataBase–mysql; (3)開發(fā)環(huán)境–MyEclipse8.5。
第四章總體設(shè)計4.1數(shù)據(jù)庫myshopping設(shè)計本設(shè)計的數(shù)據(jù)庫名字為myshopping,此數(shù)據(jù)庫中總共有六張表分別為:category(商品種類信息表)、adminer(管理員信息表)、salesitem(訂單明細(xì)表)、salesorder(訂單信息主表)、user(會員信息表)、product(商品信息表)。4.1.1商品種類信息表(category)的設(shè)計 表4-1category表列名數(shù)據(jù)類型長度是否空描述IDint11否類別ID(自動編號),主鍵namevarchar255否種類名gradeint11否種類級別descrvarchar255是種類描述pidint11否上一級種類id4.1.2管理員信息表(adminer)的設(shè)計表4-2adminer表列名數(shù)據(jù)類型長度是否空描述IDint11否類別ID(自動編號),主鍵usernamevarchart40否用戶名passwordvarchar32否密碼4.1.3訂單明細(xì)表(salesitem)的設(shè)計表4-3salesitem表列名數(shù)據(jù)類型長度是否空描述IDint11否ID號,主鍵orderIDint11否與salesorder表的orderID字段關(guān)聯(lián)productidint11否商品IDpriceint11否價格pcountfloat0否數(shù)量4.1.4訂單信息主表(salesorder)的設(shè)計表4-4salesorder用戶表列名數(shù)據(jù)類型長度是否空描述orderIDint11否訂單編號,主鍵useridint11否用戶idtotalpricefloat0否商品總價odatedatetime0否訂單添加時間finishedint11否訂單發(fā)貨標(biāo)識符4.1.5會員信息表(user)的設(shè)計表4-5user表列名數(shù)據(jù)類型長度是否空描述IDint11否會員ID號,主鍵usernamevarchar40否用戶名passwordvarchar32否密碼cityvarchar32否所在城市streetvarchar64否所住地街道phonevarchar40否手機電話emailvarchar20否E-mail地址homephonevarchar20否家庭電話provincevarchar32否所在省4.1.6商品信息表(product)的設(shè)計表4-6product表列名數(shù)據(jù)類型長度是否空描述IDint11否商品ID,主鍵categoryidint11否類別IDnamevarchar255否商品名稱descrvarchar255否商品簡介normalpriceint11否原價memberpriceint11否會員價photoVarchar255否圖片文件pdatedatetime0否錄入時間numint11否數(shù)量4.2前臺設(shè)計4.2.1前臺功能介紹當(dāng)用戶進(jìn)入到本系統(tǒng)的主頁后,用戶可以自由的瀏覽商品信息和搜索商品。當(dāng)用戶需要購買商品時,用戶需要先進(jìn)行注冊,注冊后再登錄,然后再把選中的商品添加到購物車當(dāng)中,最后交易生成訂單。當(dāng)用戶進(jìn)入首頁時,需登錄才能查看購物車以及訂單詳情。否則,將進(jìn)入登陸界面。4.2.2前臺購物的流程圖用戶在網(wǎng)上商城購物的整個購物流程如下圖4-1所示。用戶注冊 沒注冊用戶注冊用戶登錄 沒登陸用戶登錄進(jìn)入網(wǎng)站首頁進(jìn)入網(wǎng)站首頁刪除所選商品刪除所選商品修改數(shù)量商品搜索瀏覽商品修改數(shù)量商品搜索瀏覽商品繼續(xù)購買添加到購物車?yán)^續(xù)購買添加到購物車成功添加查看購物車成功添加查看購物車?yán)^續(xù)購買繼續(xù)購買生成訂單生成訂單結(jié)算結(jié)算訂單查看訂單查看圖4-1網(wǎng)站購物與交易處理流程4.3后臺設(shè)計4.3.1購便宜網(wǎng)上購物商城后臺功能介紹在后臺,管理員通過用戶名和口令進(jìn)行登錄,在后臺管理員可以對商品的類別加以管理:瀏覽類別、添加類別、刪除類別以及修改類別信息;可以對商品的管理:瀏覽商品、添加商品及修改商品信息;對用戶的管理:查看注冊的用戶;對訂單的管理:查看訂單、以及對訂單處理等功能。4.3.2購便宜商城后臺的操作流程圖管理員在后臺進(jìn)行管理的整個操作流程如下圖4-2所示。管理員登錄管理員登錄進(jìn)入后臺管理的界面那進(jìn)入后臺管理的界面那訂單管理商品管理商品類別管理用戶管理訂單管理商品管理商品類別管理用戶管理 訂單詳情瀏覽訂單發(fā)貨訂單瀏覽商品刪除商品修改商品增加商品瀏覽用戶瀏覽類別瀏覽類別修改類別刪除類別增加訂單詳情瀏覽訂單發(fā)貨訂單瀏覽商品刪除商品修改商品增加商品瀏覽用戶瀏覽類別瀏覽類別修改類別刪除類別增加圖4-2網(wǎng)站購物與交易處理流程第五章界面設(shè)計5.1用戶注冊5.1.1界面當(dāng)進(jìn)入注冊界面,需填寫注冊所需的用戶名、密碼、確認(rèn)密碼、聯(lián)系電話、送貨地址等信息,如果郵箱已被注冊,提示該郵箱已被注冊;如果點擊注冊時,有空的地方?jīng)]有填寫,將彈出相應(yīng)的提示信息。都輸入完成之后可以單擊“提交”按鈕進(jìn)行注冊,具體效果如圖5-1-1所示。注冊成功后頁面如下:如果點擊登錄鏈接將跳入到登陸界面,如果不點擊,3秒鐘后將自動跳入到登陸界面:圖5-1-15.1.2流程圖主頁主頁點擊注冊按鈕填寫注冊信息返回登錄注冊圖5-1-25.2用戶登錄5.2.1界面首先可以在主頁的左上方進(jìn)行登錄,需填入會員名和密碼點擊登錄按鈕進(jìn)行登錄,登錄成功自動跳入首頁,具體效果如圖5-2-1所示:如果填寫錯誤,將跳入到錯誤頁面,如下圖,點擊返回跳入到登陸界面。圖5-2-15.2.2流程圖注冊成功注冊成功返回主頁登陸登錄成功自由購物圖5-2-25.3用戶登錄5.3.1界面當(dāng)用戶在專門的登錄頁面登錄成功之后頁面自動跳轉(zhuǎn)到前臺首頁,登陸后,由于注冊時,密碼采用md5技術(shù)對密碼進(jìn)行加密,所以用戶不能修改密碼,用戶只可以重設(shè)自己的密碼,如下圖所示:圖5-3-1(2)登陸成功后,用戶也可以通過點擊最上面的我的訂單,查看以前的夠買訂單,可以點擊詳細(xì)信息按鈕查看該訂單中所有的商品信息,具體效果如圖5-3-2所示:圖5-3-2(5)登陸成功后,用戶也可以通過點擊最上面的購物車,查看登錄成功后選中的物品,點擊刪除按鈕可以對購物車中商品進(jìn)行刪除,點擊繼續(xù)購買返回首頁,點擊下訂單,頁面跳轉(zhuǎn)到下訂單頁面,具體效果如圖5-3-3所示:商品數(shù)量可以進(jìn)行修改,如果數(shù)量修改后超過商品總量將彈出提示信息。修改完數(shù)量后,點擊更新購物車,可以對購物車進(jìn)行更新。如果數(shù)量為空,將彈出提示信息,如下圖:圖5-3-35.3.2流程圖注冊成功注冊成功返回主頁登陸登錄成功自由購物圖5-3-65.4查看商品信息5.4.1界面進(jìn)入首頁后,用戶可以根據(jù)菜單欄選擇自己想要選擇的商品,首頁中間為商品所有種類,再下面是最新上架的商品,可以選擇它進(jìn)行夠買,首頁具體效果如圖5-4-1所示:圖5-4-15.4.2流程圖商品瀏覽登錄成功商品瀏覽登錄成功查看商品詳情圖5-4-25.5商品搜索5.5.1界面當(dāng)主頁的商品不能滿足用戶的要求時,用戶可以在主頁進(jìn)行商品搜索(關(guān)鍵字搜索),搜索結(jié)果如圖5-5-1所示:圖5-5-15.5.2流程圖商品搜索登錄成功商品搜索登錄成功查看商品詳情圖5-5-25.6購物車5.6.1界面當(dāng)在主頁瀏覽貨物過程中看中了自己喜歡的商品,可以單擊圖片或者單擊圖片下“詳情”查看該件商品的詳細(xì)信息(商品名稱、圖片、描述、價格),具體效果如圖5-6-1所示:圖5-6-1了解了商品詳情之后,如果確定要買此商品可以單擊“添加到購物車”把商品添加到自己的購物車,在購物車頁面用戶也可以修改您要購買物品的數(shù)量,具體效果如圖5-6-2所示:圖5-6-25.6.2流程圖查看商品詳情添加購物車查看商品詳情添加購物車修改購買數(shù)量確認(rèn)訂單5.7生成訂單5.7.1界面(1)當(dāng)完成所有的貨物選擇之后,就可以在購物車頁面單擊“確認(rèn)訂單”按鈕進(jìn)入訂單信息確認(rèn)界面以及對所買商品進(jìn)行結(jié)算,具體效果如圖5-7-1所示:圖5-7-15.7.2流程圖確認(rèn)訂單結(jié)算商品總價格確認(rèn)訂單結(jié)算商品總價格確認(rèn)送貨信息確認(rèn)支付5.8后臺管理5.8.1界面(1)首先進(jìn)入后臺管理的登錄頁面,填寫管理員的用戶名和密碼單擊“登錄”按鈕可進(jìn)入后臺進(jìn)行管理,具體效果如圖5-8-1所示:圖5-8-1(2)當(dāng)用戶名和密碼登錄無誤,管理員可成功將納入后臺的主界面,在主界面可以別對用戶、商品類別、商品信息、訂單以及報表的管理,具體效果如圖5-8-2所示:圖5-8-2(3)首先是用戶管理模塊,在用戶管理中可以對所有注冊的用戶用戶進(jìn)行瀏覽,具體效果如圖5-8-3所示:圖5-8-3(4)在類別管理模塊中,管理員可以對商品的類別進(jìn)行瀏覽(分別可以表格展示和樹狀形式的展示)、添加類別、刪除刪除類別、修改類別信息,具體效果如下圖所示:瀏覽產(chǎn)品種類頁面,通過點擊一級菜單和二級菜單按鈕,可分別查看商品種類內(nèi)容。點擊新增按鈕可以添加商品種類。點擊確定按鈕將直接保存。如果填寫的內(nèi)容中有空的,將彈出相應(yīng)的提示信息。如果填寫內(nèi)容都不為空,將直接保存。點擊編輯按鈕可以對商品種類進(jìn)行修改,點擊確定按鈕將直接修改。如果填寫的內(nèi)容中有空的,將彈出相應(yīng)的提示信息。如果填寫內(nèi)容都不為空,將直接修改。點擊刪除按鈕可以對該種類下商品種類及商品全部刪除。如果點擊一級菜單后刪除,如果該一級菜單下面還有二級菜單及商品,刪除將提醒是否刪除。如下圖:如果點擊確認(rèn)按鈕,將把該種類及下面的二級種類及下面的所有商品刪除,商品也將從服務(wù)器上直接刪除。在商品管理模塊中,管理員可以對商品信息進(jìn)行瀏覽、修改信息、刪除商品,具體效果如下圖所示:點擊左側(cè)產(chǎn)品管理可以查看所有產(chǎn)品信息。也可以通過點擊查詢按鈕,對產(chǎn)品進(jìn)行級聯(lián)查詢(根據(jù)產(chǎn)品名稱和種類一起查詢,名稱查詢?yōu)槟:樵儯?。點擊新增按鈕可以對商品進(jìn)行增加,其中可以對產(chǎn)品的圖片進(jìn)行上傳,產(chǎn)品圖片將直接上傳到服務(wù)器上,如下圖。另外,需要注意的是:商品新增時,價格及商品數(shù)量只能輸入數(shù)字,中文及拼音將被屏蔽,商品圖片也只能上傳相應(yīng)的圖片格式,內(nèi)容都填寫完整后(如果有空的地方?jīng)]填寫,點擊確定時將彈出相應(yīng)的提示信息),點擊確定按鈕將保存成功,彈出保存成功,并刷新當(dāng)前頁面,點擊取消,彈出框?qū)㈥P(guān)閉。如下圖:點擊編輯按鈕可以對商品進(jìn)行修改,修改時,上級菜單我設(shè)置為不能修改,另外,需要注意的是:商品修改時,價格及商品數(shù)量只能輸入數(shù)字,中文及拼音將被屏蔽,商品圖片也只能上傳相應(yīng)的圖片格式,內(nèi)容都填寫完整后(如果有空的地方?jīng)]填寫,點擊確定時將彈出相應(yīng)的提示信息),點擊確定按鈕將修改成功,彈出修改成功,并刷新當(dāng)前頁面,點擊取消,彈出框?qū)㈥P(guān)閉??梢詫ι唐返膱D片也進(jìn)行修改,修改之后原來的圖片將在服務(wù)器上被刪除,被新的替換掉。點擊刪除按鈕可以對商品進(jìn)行刪除,可以選擇刪除,也可以全選刪除,刪除商品是如果商品已經(jīng)在訂單中使用過,將提醒你該商品不能刪除。(6)管理員也可以進(jìn)入訂單管理的模塊,在訂單管理中,管理員可查看所有的訂單,以及訂單的明細(xì),再根據(jù)現(xiàn)在目前的庫存情況對訂單進(jìn)行處理,訂單管理中有未發(fā)貨和已發(fā)貨兩種查看方式,在未發(fā)貨中選擇相應(yīng)的行(如果不選擇,將彈出提示信息),然后點擊發(fā)貨,將彈出發(fā)貨成功,該訂單將可以在已發(fā)貨訂單信息中查看,點擊訂單中的詳細(xì),將可以對訂單中的訂單詳情進(jìn)行查看,具體效果如圖5-8-7所示:圖5-8-75.8.2流程圖后臺管理的整個流程圖如下圖5-8-10所示:管理員登錄瀏覽用戶管理管理員登錄瀏覽用戶管理瀏覽、添加、刪除、修改、添加商品種類商品類別管理瀏覽、添加、刪除、修改、添加商品種類商品類別管理瀏覽、添加、刪除、修改商品商品管理瀏覽、添加、刪除、修改商品商品管理瀏覽、訂單處理訂單管理瀏覽、訂單處理訂單管理圖5-8-10第六章開發(fā)環(huán)境配置說明6.1開發(fā)環(huán)境配置本人在設(shè)計的過程中,需要搭建一個普通WEB開發(fā)環(huán)境,具體的環(huán)境配置如下:第一步:到官方網(wǎng)站下載JDK1.6、Tomcat6.0、mysql軟件,以及NavicatPremium管理組件等軟件。第二步:安裝jdk和配置環(huán)境變量和Tomcat6.01.安裝J2SE的JDK1.6以后,需要配置一下環(huán)境變量,在我的電腦->屬性->高級->環(huán)境變量->系統(tǒng)變量中添加以下環(huán)境變量:JAVA_HOME=D:\Java\jdk1.6.0_30classpath=.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar;(.;一定不能少,因為它表示當(dāng)前路徑)path=%JAVA_HOME%\bin;如圖6-1所示:圖6-SEQ圖表\*ARABIC1接著可以寫一個簡單的啟動MS-DOS窗口來測試J2SDK是否已安裝成功,點擊->開始->運行->輸入cmd->點擊確定。在DOS窗口中輸入javac,按<Enter>鍵,系統(tǒng)會輸出javac命令的使用幫助信息,如下圖6-2所示。這說明JDK配置成功,否則需要檢查上面各步驟的配置是否正確。圖6-2接著可以啟動tomcat,在IE中訪問http://localhost:8080,如果看到tomcat的歡迎頁面的話說明安裝成功了。第三步:安裝mysql在安裝mysql的過程后,要安裝NavicatPremium這個軟件,它相當(dāng)于數(shù)據(jù)庫的一個圖形界面工具,可以查看數(shù)據(jù)庫中的所有數(shù)據(jù)庫及表的信息。第三步:安裝MyEclips8.5雙擊MyEclips8.5可以進(jìn)行安裝,選擇適當(dāng)路徑進(jìn)行安裝。等待安裝完成之后,啟動MyEclipse之后必須設(shè)置的兩項是設(shè)置Java的JDK路徑和服務(wù)器(Tomcat6.0)路徑。當(dāng)啟動完成之后,新建一個Web項目,命名為myshopping。第七章開發(fā)與測試7.1開發(fā)流程本人在設(shè)計的過程中,采用循序漸進(jìn)的方式進(jìn)行開發(fā),為使開發(fā)的過程是一個循序漸進(jìn)的過程,為此本人按如下步驟進(jìn)行開發(fā):=1\*GB2⑴完成數(shù)據(jù)庫myshopping的設(shè)計。=2\*GB2⑵完成用戶注冊模塊。=3\*GB2⑶完成用戶登錄模塊以及自服務(wù)功能(用戶信息修改),從而驗證用戶注冊模塊。=4\*GB2⑷轉(zhuǎn)入后臺設(shè)計。首先完成對用戶管理模塊(增刪改查等功能),再完成對類別的管理模塊。=5\*GB2⑸完成對商品信息的管理模塊,可以對上一步驟的驗證。=6\*GB2⑹再轉(zhuǎn)入前臺設(shè)計。在前臺主頁展現(xiàn)后臺所添加的類別和商品,以供用戶瀏覽。=7\*GB2⑺完成商品購物模塊。包括購物車、訂單產(chǎn)生等模塊。=8\*GB2⑻查看用下過的訂單模塊。=9\*GB2⑼再轉(zhuǎn)入后臺設(shè)計。完成后臺管理的對訂單管理的模塊。=10\*GB2⑽完成后臺對商品銷售情況的分析模塊。=11\*GB2⑾整個系統(tǒng)在功能模塊基本完成了之后,最后的任務(wù)就是給系統(tǒng)界面的美化,使所有的頁面變的美觀,以及對代碼的完善和最后綜合測試。7.2測試由于開發(fā)的方式是采用的螺旋遞增的方式進(jìn)行開發(fā)的,所以在測試的過程也同樣采用螺旋遞增的方式進(jìn)行測試即:—開發(fā)—測試—開發(fā)—測試。也就是在開發(fā)的過程之中伴隨著測試,測試的同時也是為下一個模塊的開發(fā)做鋪墊,這樣不但可以提高開發(fā)的效率,同時也可以在開發(fā)的過程中及時發(fā)現(xiàn)錯誤,避免了那種瀑布型開發(fā)模式的不足,在整個系統(tǒng)開發(fā)完畢再去測試,給最后的測試帶來了很大的困難。 在整個設(shè)計的過程中,本人感觸最深的就是測試的重要性還有前期準(zhǔn)備工作的重要性。不重視測試,若是老想著把所有工作做完后再去測試,結(jié)果總是很不理想。因為如果不及時進(jìn)行測試,當(dāng)把所有的代碼都寫完的時候才去測試,結(jié)果發(fā)現(xiàn)很多錯誤出現(xiàn)的具體位置在哪,這增加了測試的難度。第八章所用技巧及難點分析8.1所用技巧(1).彈出框lhgdialog。本項目很多地方都用到了彈出框,如前臺首頁的重設(shè)密碼,后臺的新增,修改商品種類,新增,修改商品時使用到了彈出框。Ihgdialog介紹:lhgDialog是一個功能強大且兼容面廣的對話框組件,它擁有精致的界面與友好的接口。基于網(wǎng)絡(luò)訪問并且兼容IE6.0+,Firefox3.0+,Opera9.6+,Chrome1.0+,Safari3.22+。相對于網(wǎng)上其它彈出窗口插件主要功能是提示信息來說,本插件主要是用來制作窗口中內(nèi)容較多,頁面比較復(fù)雜的窗口。本插件的窗口內(nèi)容面主要是以嵌入iframe框架為主,內(nèi)容頁為一個單獨的頁面。這樣就可以更方便的管理內(nèi)容頁,頁面的樣式也不受其它頁面的影響,而且內(nèi)容頁可以是靜態(tài)或動態(tài)的任何一種文件。由于本插件主要是用來制作大型的窗口,頁面和窗口間的交互肯定會非常頻繁,所以本插件提供了豐富的交互控制接口,可以非常方便的進(jìn)行頁面間的數(shù)據(jù)的傳輸。由于本插件所需的lhgcore.min.js庫文件就相當(dāng)于一個精簡的jQuery庫,所以本插件的代碼的書寫方式和jQ的一樣精簡。如果您想把它做的jQ的插件,只要在頁面引入jQuery的庫(此時不再需要引入lhgcore.min.js庫文件),代碼作一下非常簡單的修改即可。無論你把窗口插件放在哪里,你都不需要擔(dān)心會被外層的frameset或iframe所遮擋進(jìn)而影響客戶體驗,lhgdialog窗口插件是可以跨無限級框架顯示的,lhgdialog采用九宮格的XHTML結(jié)構(gòu),CSS類鉤子比較豐富,可以定制類似桌面軟件般精致的皮膚。..jGrid表格插件使用jqGrid是一個用來顯示網(wǎng)格數(shù)據(jù)的jQuery插件,本項目中后臺的所有表格都是采用jGrid表格,jGrid好用的原因時它封裝了好多的js方法,這樣你不用再自己寫js了,所有開發(fā)速度也快了。jqGrid介紹:JQGrid是一個在jquery基礎(chǔ)上做的一個表格控件,以ajax的方式和服務(wù)器端通信。jqGrid安裝很簡單,只需把相應(yīng)的css、js文件加入到頁面中即可。需要說明的是,jquery-ui的字體大小與jqgrid字體大小不一致,故需要在頁面上在加上一段style來指定頁面上文字大小。jqGrid原理:jqGrid是典型的B/S架構(gòu),服務(wù)器端只是提供數(shù)據(jù)管理,客戶端只提供數(shù)據(jù)顯示。換句話說,jqGrid可以以一種更加簡單的方式來展現(xiàn)你數(shù)據(jù)庫的信息,而且也可以把客戶端數(shù)據(jù)傳回給服務(wù)器端。對于jqGrid我們所關(guān)心的就是:必須有一段代碼把一些頁面信息保存到數(shù)據(jù)庫中,而且也能夠把響應(yīng)信息返回給客戶端。jqGrid是用ajax來實現(xiàn)對請求與響應(yīng)的處理。.放大器插件前臺的商品詳細(xì)頁面,鼠標(biāo)移上去后,圖片將被放大,此處就是用到了放大器插件。Jqzoom插件使用:放大器插件使用起來相當(dāng)簡單,只需要把相應(yīng)的js插件放到你要放到的位置,然后在頁面上引入該js插件,然后在要放大的圖片上改改相應(yīng)的css,則可使用。8.2難點分析8.2.1分頁本項目好多地方都用到了分頁技巧,雖效果差不多,但是其實,所使用的方法都有所不同,下面我將分別說說我所使用的幾個分頁技巧。.后臺的表格都有分頁。因為后臺表格使用的jGrid表格插件,而該插件已經(jīng)將分頁代碼全都封裝,所以分頁代碼不用寫,只需自己設(shè)置一下,每頁顯示幾條數(shù)據(jù),然后將頁數(shù)傳遞到服務(wù)器端,服務(wù)器端將根據(jù)相應(yīng)的頁數(shù),顯示當(dāng)前頁的所有信息。.前臺的顯示所有的商品列表及通過查詢找出的商品列表都是用到了分頁,這個分頁是自己寫的代碼,jsp頁面這端自己封裝了個js方法,然后通過ajax與服務(wù)器端連接,通過每頁顯示條數(shù),及需要顯示的哪一頁,服務(wù)器端通過自己寫的代碼,將把所有的查出的商品查出,然后顯示在jsp頁面上。由于是自己寫的代碼,所以分頁的,上一頁,下一頁圖片都可以使用自己的圖片。.前臺的購物車及訂單查看,分頁采用的技術(shù)是:使用jsp頁面分頁技術(shù)。原理是:服務(wù)器返回全部的信息,jsp頁面上再根據(jù)提供的每頁顯示條數(shù),及當(dāng)前頁數(shù)顯示分頁信息。使用:使用時只需要引入兩個包。Pager-src.jar,pager-taglib.jar與上面第二個分頁不同的地方就在于它是頁面分頁,而第二個是服務(wù)器分頁,服務(wù)器端分頁需要每次都把數(shù)據(jù)傳到服務(wù)器端,然后服務(wù)器端把需要的內(nèi)容從數(shù)據(jù)庫中查出來,然后在顯示在jsp頁面上;而jsp分頁只需一次得到全部內(nèi)容,在頁面上分頁即可,不需要每次都從服務(wù)器端取數(shù)據(jù),所以相對來說,jsp頁面分頁比較方便,也比較快,使用起來也比較簡單。8.2.2.圖片的上傳技術(shù)由于該項目采用jsp+servlet的技術(shù),而不是struts(如果是strut的話,在服務(wù)器端直接就能得到上傳文件的名字,大小,等等),采用servlet后,則需要自己手動寫代碼,寫上傳文件代碼,我此次上傳技術(shù),采用的是:通過流傳遞,把上傳的圖片,一個字節(jié)一個字節(jié)的傳到服務(wù)器端,需要引入的兩個包有:commons-fileupload-1.2.2.jar和commons-io-2.0.1.jar,服務(wù)器端代碼具體如下:Stringvalue=item.getName(); intstart=value.lastIndexOf("\\"); StringfileName=value.substring(start+1); Randomrandom=newRandom(); fileName=UploadFile.createRandomFileName(fileName,path, random); photo=fileName; item.write(newFile(path,fileName));OutputStreamos=newFileOutputStream(newFile(path,fileName)); InputStreamis=item.getInputStream(); byte[]buffer=newbyte[400]; intlength=0; while((length=is.read(buffer))!=-1) { os.write(buffer,0,length); } is.close(); os.close();但是需要注意的是:在刪除圖片時,必須把圖片也刪除,不僅僅是把數(shù)據(jù)庫里面的圖片地址刪除。8.2.3.購物車模塊本項目購物車模塊,我才用的是session技術(shù)。Session技術(shù)原理:在WEB開發(fā)中,服務(wù)器可以為每個用戶瀏覽器創(chuàng)建一個會話對象(session對象),注意:一個瀏覽器獨占一個session對象(默認(rèn)情況下)。因此,在需要保存用戶數(shù)據(jù)時,服務(wù)器程序可以把用戶數(shù)據(jù)寫到用戶瀏覽器獨占的session中,當(dāng)用戶使用瀏覽器訪問其它程序時,其它程序可以從用戶的session中取出該用戶的數(shù)據(jù),為用戶服務(wù)。Session是用于保持狀態(tài)的基于Web服務(wù)器的方法。Session允許通過將對象存儲在Web服務(wù)器的內(nèi)存中在整個用戶會話過程中保持任何對象。Session通常用于執(zhí)行以下操作:存儲需要在整個用戶會話過程中保持其狀態(tài)的信息,例如登錄信息或用戶瀏覽Web應(yīng)用程序時需要的其它信息。存儲只需要在頁重新加載過程中或按功能分組的一組頁之間保持其狀態(tài)的對象。Session的作用就是它在Web服務(wù)器上保持用戶的狀態(tài)信息供在任何時間從任何頁訪問。因為瀏覽器不需要存儲任何這種信息,所以可以使用任何瀏覽器,即使是像PDA或手機這樣的瀏覽器設(shè)備。說到session就會想到cookies,Session和Cookie的主要區(qū)別在于:Cookie是把用戶的數(shù)據(jù)寫給用戶的瀏覽器。Session技術(shù)把用戶的數(shù)據(jù)寫到用戶獨占的session中。Session對象由服務(wù)器創(chuàng)建,開發(fā)人員可以調(diào)用request對象的getSession方法得到session對象。session失效的方法:session.invalidate();session的有效時間:30分鐘,在web.xml中配置session的有效時間:在web-app標(biāo)簽中設(shè)置如下:<session-config> <session-timeout>60</session-timeout>單位是分鐘 </session-config>默認(rèn)設(shè)置是在tomcat中:web.xml另外,需要知道的是session的生命周期:從創(chuàng)建出來session開始默認(rèn)情況下如果瀏覽器窗口關(guān)了,session失效瀏覽器窗口沒有關(guān),但是seesion的有效期到了瀏覽器的窗口關(guān)了,但是session的唯一標(biāo)識用cookie保存下來了,只要session的有效期沒有到,則session都是有效的應(yīng)用程序停止,session失效作用范圍:只要在瀏覽器窗口沒有關(guān),通過這個窗口發(fā)送的請求就都可以得到整個應(yīng)用程序中都有效,但是是瀏覽器獨享的。request.getSession()得到/創(chuàng)建sessionrequest.getSession(true)相當(dāng)于request.getSession()request.getSession(false)沒有session就返回null瀏覽器的版本:ie8中同一個瀏覽器打開兩個窗口是共享session的。但是ie7中就不是同一個瀏覽器打開兩個窗口是不共享session的使用session注意點:IE禁用Cookie后的session處理:URL重寫response.encodeRedirectURL(java.lang.String
url)用于對sendRedirect方法后的url地址進(jìn)行重寫。response.encodeURL(java.lang.String
url)用于對表單action和超鏈接的url地址進(jìn)行重寫。本項目中的購物車模塊就是把購物車放到session域里面,這樣不管到了那個頁面,都可以通過session的屬性得到該購物車,并可以通過自己寫方法,實現(xiàn)購物車增加商品,刪除商品。購物車代碼主要如下:publicclassMyCart{ HashMap<String,Product>hm=newHashMap<String,Product>(); //添加 //添加方法1 publicvoidaddProduct(Stringid,Productproduct){ if(hm.containsKey(id)){ //如果已經(jīng)購買 product=hm.get(id); intshoppingNum=product.getShoppingNum(); product.setShoppingNum(shoppingNum+1); }else{ hm.put(id,product); } } //添加方法2 publicvoidaddProduct2(Stringid){ if(hm.containsKey(id)){ //如果已經(jīng)購買 Productp=hm.get(id); intshoppingNum=p.getShoppingNum(); p.setShoppingNum(shoppingNum+1); }else{ hm.put(id,ProductDAO.getProduct(Integer.parseInt(id))); } } //刪除 publicvoiddelProduct(Stringid){ hm.remove(id); } //更新(更新購買的dongxi數(shù)量) publicvoidupdateProduct(Stringid,Stringnums){ //取出id對應(yīng)的book Productp=hm.get(id); p.setShoppingNum(Integer.parseInt(nums)); } //清空 publicvoidclearProduct(){ hm.clear(); } //顯示該購物車中的所有商品信息 publicArrayListShowMyCart(){ ArrayList<Product>arr=newArrayList<Product>(); //遍歷hashmap Iteratorit=hm.keySet().iterator(); while(it.hasNext()){ //取出key Stringid=(String)it.next(); Productp=hm.get(id); arr.add(p); } returnarr; } //計算總價 publicfloatgetTotalPrice(){ floattotalPrice=0.0f; Iteratorit=hm.keySet().iterator(); while(it.hasNext()){ StringproductId=(String)it.next(); Productp=hm.get(productId); totalPrice+=p.getNormalPrice()*p.getShoppingNum(); } returntotalPrice; }}8.2.4.驗證碼技術(shù)主要利用Session實現(xiàn)一次性驗證碼。一次性驗證碼的主要目的就是為了限制人們利用工具軟件來暴力猜測密碼。服務(wù)器程序接收到表單數(shù)據(jù)后,首先判斷用戶是否填寫了正確的驗證碼,只有該驗證碼與服務(wù)器端保存的驗證碼匹配時,服務(wù)器程序才開始正常的表單處理流程。密碼猜測工具要逐一嘗試每個密碼的前題條件是先輸入正確的驗證碼,而驗證碼是一次性有效的,這樣基本上就阻斷了密碼猜測工具的自動地處理過程。本項目中注冊是使用到了驗證碼技術(shù)。代碼主要如下:publicvoidservice(HttpServletRequestrequest,HttpServletResponseresponse) throwsServletException,IOException{ response.setContentType("img/jpeg"); //圖片的內(nèi)存映像 BufferedImageimage=newBufferedImage(60,20,BufferedImage.TYPE_INT_RGB); //獲得畫筆對象 Graphicsg=image.getGraphics(); Randomr=newRandom(); g.setColor(newColor(r.nextInt(255),r.nextInt(255),r.nextInt(255))); g.fillRect(0,0,60,20); g.setColor(newColor(0,0,0)); Stringnumber=r.nextInt(99999)+""; g.drawString(number,5,15); g.setColor(newColor(r.nextInt(255),r.nextInt(255),r.nextInt(255))); g.drawLine(r.nextInt(60),r.nextInt(20),r.nextInt(),r.nextInt()); //壓縮成jpeg格式 OutputStreamos=response.getOutputStream(); JPEGImageEncoderencoder=JPEGCodec.createJPEGEncoder(os); //把BufferedImage對象中的圖像信息編碼后向創(chuàng)建蓋度uixiang(encoder)時指定的輸出 encoder.encode(image); request.getSession().setAttribute("check_code",number); }8.2.5.md5加密技術(shù)MD5即Message-DigestAlgorithm5(信息-摘要算法5),用于確保信息傳輸完整一致。是計算機廣泛使用的雜湊算法之一(又譯摘要算法、哈希算法),主流編程語言普遍已有MD5實現(xiàn)。MD5的典型應(yīng)用是對一段信息(Message)產(chǎn)生信息摘要(Message-Digest),以防止被篡改。比如,在UNⅨ下有很多軟件在下載的時候都有一個文件名相同,文件擴展名為.md5的文件,在這個文件中通常只有一行文本,大致結(jié)構(gòu)如:MD5(tanajiya.tar.gz)=0ca175b9c0f726a831d895e269332461這就是tanajiya.tar.gz文件的數(shù)字簽名。MD5將整個文件當(dāng)作一個大文本信息,通過其不可逆的字符串變換算法,產(chǎn)生了這個唯一的MD5信息摘要。原理是:原理對MD5算法簡要的敘述可以為:MD5以512位分組來處理輸入的信息,且每一分組又被劃分為16個32位子分組,經(jīng)過了一系列的處理后,算法的輸出由四個32位分組組成,將這四個32位分組級聯(lián)后將生成一個128位散列值。在MD5算法中,首先需要對信息進(jìn)行填充,使其位長對512求余的結(jié)果等于448。因此,信息的位長(BitsLength)將被擴展至N*512+448,N為一個非負(fù)整數(shù),N可以是零。填充的方法如下,在信息的后面填充一個1和無數(shù)個0,直到滿足上面的條件時才停止用0對信息的填充。然后,在這個結(jié)果后面附加一個以64位二進(jìn)制表示的填充前信息長度。經(jīng)過這兩步的處理,現(xiàn)在的信息的位長=N*512+448+64=(N+1)*512,即長度恰好是512的整數(shù)倍。這樣做的原因是為滿足后面處理中對信息長度的要求。MD5中有四個32位被稱作鏈接變量(ChainingVariable)的整數(shù)參數(shù),他們分別為:A=0x67452301,B=0xefcdab89,C=0x98badcfe,D=0x10325476。當(dāng)設(shè)置好這四個鏈接變量后,就開始進(jìn)入算法的四輪循環(huán)運算。循環(huán)的次數(shù)是信息中512位信息分組的數(shù)目。將上面四個鏈接變量復(fù)制到另外四個變量中:A到a,B到b,C到c,D到d。主循環(huán)有
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 淮安2024年江蘇淮安漣水縣面向村(社區(qū))黨組織書記選聘鎮(zhèn)(街道)事業(yè)單位工作人員筆試歷年參考題庫附帶答案詳解
- 2025年中國唑螨酯市場調(diào)查研究報告
- 2025年中國五金工具塑料泡罩市場調(diào)查研究報告
- 2025年走馬機丈根帶項目可行性研究報告
- 2025至2031年中國調(diào)墨螺釘行業(yè)投資前景及策略咨詢研究報告
- 2025年移動平板滑輪車項目可行性研究報告
- 成都2025年四川成都師范學(xué)院招聘高層次人才67人(第一批)筆試歷年參考題庫附帶答案詳解
- 2025年水族產(chǎn)品項目可行性研究報告
- 2025年顯色皂洗機項目可行性研究報告
- 2025至2031年中國實心輪胎模具行業(yè)投資前景及策略咨詢研究報告
- 2025-2030年中國汽車用鉛酸蓄電池市場發(fā)展趨勢展望與投資策略分析報告
- 天津市和平區(qū)2024-2025學(xué)年高一(上)期末質(zhì)量調(diào)查物理試卷(含解析)
- cpk自動計算電子表格表格
- 第五章 曲線運動(基礎(chǔ)夯實)-高一物理人教版(2019)必修二單元鞏固檢測
- 排球正面上手傳球 說課稿-2023-2024學(xué)年高一上學(xué)期體育與健康人教版必修第一冊
- 2025年浙江省交通投資集團財務(wù)共享服務(wù)中心招聘2名高頻重點提升(共500題)附帶答案詳解
- 客流統(tǒng)計系統(tǒng)施工方案
- 瓶裝液化氣送氣工培訓(xùn)
- 道德經(jīng)全文完整版本
- 濰坊市人民醫(yī)院招聘真題
- 銷售人員薪資提成及獎勵制度
評論
0/150
提交評論