版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 本 科 畢 業(yè) 設(shè) 計(jì)</p><p> 電子商務(wù)—當(dāng)當(dāng)網(wǎng)網(wǎng)頁(yè)制作</p><p> 所在學(xué)院 </p><p> 專業(yè)班級(jí) 電子與信息工程 </p><p> 學(xué)生姓名 學(xué)號(hào) <
2、/p><p> 指導(dǎo)教師 職稱 </p><p> 完成日期 年 月 </p><p><b> 摘要</b></p><p> 隨著信息高速公路的建立,Internet的普及,網(wǎng)絡(luò)技術(shù)的迅猛發(fā)展,人類社會(huì)已經(jīng)進(jìn)入了一個(gè)信息化社
3、會(huì)。</p><p> 電子商務(wù)指利用簡(jiǎn)單、快捷、低成本的電子通訊方式,買賣雙方通過(guò)網(wǎng)絡(luò)進(jìn)行各種商貿(mào)活動(dòng)的一種商業(yè)交易模式。隨著互聯(lián)網(wǎng)的發(fā)展,以及人們消費(fèi)觀念和生活方式的改變,這種新型的商業(yè)模式逐漸融入了人們的生活中。通過(guò)企業(yè)的門戶網(wǎng)站,人們可以足不出戶的尋找自己所需的物品,通過(guò)對(duì)不同虛擬商城的訪問(wèn),“顧客”可以找出性價(jià)比最高的商品,自己有極大地選擇空間;通過(guò)下訂單,你可以很快得到自己想要的物品,這給顧客節(jié)省很
4、多時(shí)間和精力;對(duì)于廠家來(lái)說(shuō),可以極大地降低庫(kù)存風(fēng)險(xiǎn),可根據(jù)客戶需要,按需采購(gòu)和生產(chǎn),大大地提高了效益[1]。</p><p> 互聯(lián)網(wǎng)的發(fā)展,以及人們消費(fèi)觀念和生活方式的改變,這種新型的商業(yè)模式逐漸融入了人們的生活中。該系統(tǒng)以core java為核心、MyEclipse為主要開(kāi)發(fā)工具,同時(shí)采用MySql數(shù)據(jù)庫(kù),Servlet以及Hibernate,基于MVC模式的struts1框架,并在此基礎(chǔ)上加入JavaSc
5、ript、Ajax等Web技術(shù),本系統(tǒng)主要是以購(gòu)書(shū)系統(tǒng)為主,包括圖書(shū)分類瀏覽,模塊索引,用戶注冊(cè)、登錄,商品管理,購(gòu)物車管理,訂單管理等各個(gè)部分,可以很方便的對(duì)各個(gè)部分進(jìn)行操作,從而達(dá)到了用戶對(duì)商品的瀏覽和購(gòu)買,簡(jiǎn)潔方便,一目了然! 本電子商務(wù)購(gòu)書(shū)系統(tǒng),可以注冊(cè)會(huì)員,并且在登錄之后可以購(gòu)買里面的圖書(shū),圖書(shū)在書(shū)架上是可以分頁(yè)瀏覽的,還可以按關(guān)鍵字篩選,客戶點(diǎn)擊購(gòu)買,就可以擁有購(gòu)物車,并把對(duì)應(yīng)的圖書(shū)放進(jìn)購(gòu)物車。如果客戶不想要購(gòu)物車內(nèi)的商品項(xiàng)
6、,則可以刪除對(duì)應(yīng)的商品項(xiàng),若不小心刪除了想購(gòu)買的商品項(xiàng),也可以點(diǎn)擊恢復(fù),又可以重新把商品項(xiàng)放進(jìn)購(gòu)物車。最后客戶選好商品就可以下訂單確定購(gòu)買。總體來(lái)看,本電子商務(wù)購(gòu)書(shū)系統(tǒng),界面簡(jiǎn)單、操作方便、適合電子商務(wù)公司使用。</p><p> 關(guān)鍵詞:Web技術(shù);電子商務(wù);模塊索引;strut</p><p><b> Abstract</b></p><
7、p> With the establishment of high way of information, the popularization of Internet and the rapid development of network technology, human society has entered a society of information.</p><p> E-commer
8、ce is a new business transaction, through which both buyers and sellers can use a simple, fast and low-cost means of electronic and communication. With the development of the Internet, and people's consumption idea a
9、nd the way of life changing, this new business model has gradually integrated into people's lives. Through the portal site of enterprise, people can look up the goods which they required without going out; through th
10、e different virtual mall visit, people can find the most cos</p><p> As development of the Internet, and people's consumption idea and the way of life changing, this new business model has gradually int
11、egrated into people's lives. The system uses core java as the core, MyEclipse as the main development tool, and MySql as database, Servlet and Hibernate framework, struts1 base on MVC framework, and on this basis, a
12、dding the JavaScript, Ajax and other Web technologies, the system primary function is book trading online, which includes the addition of books, user r</p><p><b> 目錄</b></p><p><
13、b> 第1章 引 言1</b></p><p><b> 1.1課題背景1</b></p><p> 1.2課題的目的和意義1</p><p> 第2章 電子商務(wù)網(wǎng)站開(kāi)發(fā)技術(shù)基礎(chǔ)2</p><p> 2.1 Struts1.2.1框架技術(shù)2</p><p>
14、 2.2 MySql應(yīng)用2</p><p> 2.3 Hibernate技術(shù)應(yīng)用2</p><p> 2.4 Jquery技術(shù)應(yīng)用2</p><p> 2.5 JSP的技術(shù)應(yīng)用3</p><p> 2.5.1 JSP的強(qiáng)勢(shì)與劣勢(shì)3</p><p> 2.5.2 JSP與ASP的比較4</p&
15、gt;<p> 2.6 J2EE概述與發(fā)展5</p><p> 第3章“當(dāng)當(dāng)網(wǎng)”電子商務(wù)網(wǎng)站設(shè)計(jì)與開(kāi)發(fā)6</p><p> 3.1 概要設(shè)計(jì)6</p><p> 3.1.1 基于B/S的多層次結(jié)構(gòu)6</p><p> 3.1.2 開(kāi)發(fā)環(huán)境及工具6</p><p> 3.1.3“ 當(dāng)當(dāng)
16、網(wǎng)”電子商務(wù)項(xiàng)目規(guī)劃6</p><p> 3.1.4 功能圖解7</p><p> 3.1.5 數(shù)據(jù)庫(kù)設(shè)計(jì)7</p><p> 3.1.6 數(shù)據(jù)表的設(shè)計(jì)7</p><p> 3.1.7 框架設(shè)計(jì)10</p><p> 3.2 與用戶互動(dòng)性設(shè)計(jì)11</p><p> 3.3
17、 模塊設(shè)計(jì)13</p><p> 3.3.1登陸注冊(cè)模塊13</p><p> 3.3.2分類排序查詢模塊15</p><p> 3.3.3購(gòu)物車管理模塊18</p><p> 3.3.4訂單管理模塊21</p><p> 3.4頁(yè)面美化-用戶界面設(shè)計(jì)UI層24</p><p&
18、gt; 第4章 系統(tǒng)的測(cè)試25</p><p> 第5章 電子商務(wù)網(wǎng)站開(kāi)發(fā)工作展望26</p><p> 5.1 電子商務(wù)網(wǎng)站開(kāi)發(fā)前瞻26</p><p> 5.2 后續(xù)工作展望27</p><p><b> 總結(jié)28</b></p><p><b> 致謝29&
19、lt;/b></p><p><b> 參考文獻(xiàn)30</b></p><p> 附錄1:項(xiàng)目測(cè)試記錄31</p><p><b> 第1章 引 言</b></p><p><b> 1.1課題背景</b></p><p> 隨著當(dāng)今世
20、界進(jìn)入信息時(shí)代,Internet的飛速發(fā)展和在全球的普及給人類生活帶來(lái)革命性的改變。Internet將傳統(tǒng)意義上的物理空間轉(zhuǎn)變成電子空間,把人們帶入了一個(gè)網(wǎng)絡(luò)社會(huì)中。網(wǎng)絡(luò)時(shí)代的到來(lái),帶給人們的不只是快捷、方便,它帶來(lái)的是劃時(shí)代的進(jìn)步。在網(wǎng)絡(luò)大家族中,電子商務(wù)則是一個(gè)熱點(diǎn),它的發(fā)展速度之快遠(yuǎn)遠(yuǎn)超過(guò)我們的想象,普及速度之快令人難以置信。我們完全有理由相信,全球性的電子商務(wù)熱潮必將一浪高于一浪[1]。</p><p>
21、 電子商務(wù)一個(gè)最基本體現(xiàn)就是電子購(gòu)物網(wǎng)站,從一定程度上講它就是網(wǎng)上超市,也就是一種網(wǎng)上交易?!熬W(wǎng)”字意味著它具有信息時(shí)代的快捷方便等特征。事實(shí)上電子商務(wù)的出現(xiàn),給消費(fèi)者的地位,消費(fèi)觀念帶來(lái)了重要的變化。網(wǎng)上交易系統(tǒng)正是應(yīng)這種變化而悄然崛起,并以驚人的速度發(fā)展著。通過(guò)網(wǎng)上交易系統(tǒng),人們可以足不出戶的尋找自己所需的物品,通過(guò)對(duì)不同虛擬商城的訪問(wèn),“顧客”可以找出性價(jià)比最高的商品,自己有極大地選擇空間,通過(guò)下訂單,你可以很快得到自己想要的物
22、品,這給顧客節(jié)省很多時(shí)間和精力,對(duì)于廠家來(lái)說(shuō),可以極大的降低庫(kù)存風(fēng)險(xiǎn),根據(jù)客戶需要,按需生產(chǎn)和采購(gòu),大大的提高了效益[1]。</p><p> 1.2課題的目的和意義</p><p> 自從電子商務(wù)發(fā)展越來(lái)越快,它也迅速地出現(xiàn)我們的生活視野中。因此在人們的視野中,電子商務(wù)就在全球范圍內(nèi)受到了格外的關(guān)注,并得到了飛躍式的發(fā)展。從實(shí)用角度看,電子商務(wù)網(wǎng)站目前存在的問(wèn)題主要是顧客很難找到自己
23、所希望得到的商品,有時(shí)顧客甚至花費(fèi)了很大的精力與時(shí)間后找到了自己所需的商品,即使這樣,最后由于種種原因顧客還是放棄了購(gòu)買。很多報(bào)道指出,有一部分推銷商們普遍對(duì)目前的網(wǎng)絡(luò)行銷有點(diǎn)感到失望,盡管如此,電子商務(wù)無(wú)疑還是當(dāng)前社會(huì)最好的在線商品展示的媒體和工具。但是,網(wǎng)上商品的展示給客戶的目的,不僅僅是展示所謂商品,而真正最重要的目的是讓更多的客戶去了解網(wǎng)上的商品從而提高商品的購(gòu)買率和信用度。因此,電子商務(wù)網(wǎng)站目前所面臨的最大的挑戰(zhàn)之一就是網(wǎng)站的
24、設(shè)計(jì),該如何使得網(wǎng)頁(yè)設(shè)計(jì)能夠更有效的展示自己所有的商品,同時(shí)也可以方便客戶的使用,使得客戶以最愉悅的心情選購(gòu)如意稱心的商品。</p><p> 本系統(tǒng)的目的和意義就是根據(jù)上述挑戰(zhàn)而嘗試為用戶提供一個(gè)操作簡(jiǎn)單方便的網(wǎng)上交易系統(tǒng)。利用本系統(tǒng),用戶可以自由地瀏覽商品,注冊(cè)成為網(wǎng)站會(huì)員,選擇商品加入自己的購(gòu)物車,而后生成訂單,實(shí)現(xiàn)網(wǎng)上購(gòu)物。</p><p> 第2章 電子商務(wù)網(wǎng)站開(kāi)發(fā)技術(shù)基礎(chǔ)&
25、lt;/p><p> 2.1 Struts1.2.1框架技術(shù)</p><p> 自從2003年6月apache推出Struts 1.1版本以來(lái),目前已經(jīng)流行于各個(gè)Web開(kāi)發(fā)的行業(yè)!人們很習(xí)慣的俗稱它為Java Web框架默認(rèn)的事實(shí)標(biāo)準(zhǔn)!它的體系結(jié)構(gòu)實(shí)現(xiàn)了Model-View-Controller設(shè)計(jì)模式的概念,并將這些概念映射到web應(yīng)用程式的組件和概念中?!?lt;/p><
26、;p> 在Struts中如何理解MVC呢,M英文是Model,指的是系統(tǒng)狀態(tài)和邏輯JavaBeans。V英文是View,指的是各種jsp文件,頁(yè)面包含稱為“模版文本”的靜態(tài)HTML(或XML)文本,加上插入的基于對(duì)特別行為標(biāo)記解釋的動(dòng)態(tài)內(nèi)容。C英文是Controller,指的是許多Action,一個(gè) Action 類的目標(biāo)是處理這個(gè)請(qǐng)求,然后返回一個(gè)標(biāo)識(shí)JSP頁(yè)面[2]。</p><p> 2.2 My
27、Sql應(yīng)用</p><p> MySQL是一個(gè)小型關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),開(kāi)發(fā)者為瑞典MySQL AB公司。由于其體積小、速度快、總體擁有成本低,尤其是開(kāi)放源碼這一特點(diǎn),許多中小型網(wǎng)站為了降低網(wǎng)站總體擁有成本而選擇了MySQL作為網(wǎng)站數(shù)據(jù)庫(kù)[3]。它能為多種編程語(yǔ)言提供了API,支持多線程,充分利用CPU資源,并且能優(yōu)化SQL查詢算法,有效地提高查詢速度。同時(shí)提供TCP/IP、ODBC和JDBC等多種數(shù)據(jù)庫(kù)連接途
28、徑,當(dāng)然最主要它可以處理?yè)碛猩锨f(wàn)條記錄的大型數(shù)據(jù)庫(kù)。</p><p> 與其他的大型數(shù)據(jù)庫(kù)例如Oracle、DB2、SQL Server等相比,MySQL自有它的不足之處,比如規(guī)模小、功能有限(MySQL Cluster的功能和效率都相對(duì)比較差)等,但是這絲毫也沒(méi)有減少它受歡迎的程度。對(duì)于一般的個(gè)人使用者和中小型企業(yè)來(lái)說(shuō),MySQL提供的功能已經(jīng)綽綽有余,而且由于MySQL是開(kāi)放源碼軟件,因此可以大大降低總體
29、擁有成本。</p><p> 2.3 Hibernate技術(shù)應(yīng)用</p><p> Hibernate是一個(gè)開(kāi)放源代碼的對(duì)象關(guān)系映射框架,它對(duì)JDBC進(jìn)行了非常輕量級(jí)的對(duì)象封裝,使得Java程序員可以隨心所欲的使用對(duì)象編程思維來(lái)操縱數(shù)據(jù)庫(kù)。Hibernate可以應(yīng)用在任何使用JDBC的場(chǎng)合,既可以在Java的客戶端程序使用,也可以在Servlet/JSP的Web應(yīng)用中使用,最具革命意義
30、的是,Hibernate可以在應(yīng)用EJB的J2EE架構(gòu)中取代CMP,完成數(shù)據(jù)持久化的重任。[4]</p><p> Hibernate的最大特點(diǎn)就是它的配置文件,可以大大減少代碼量,別人也可以很輕松的讀懂你的代碼,指向性很明確!也不用像JDBC那樣,每次重復(fù)的寫(xiě)連接數(shù)據(jù)庫(kù)的代碼,并且它還可以自動(dòng)創(chuàng)建表,還原表的設(shè)計(jì)代碼!</p><p> 2.4 Jquery技術(shù)應(yīng)用</p>
31、;<p> jQuery 由 John Resig 創(chuàng)建于 2006 年初,對(duì)于任何使用 JavaScript 代碼的程序員來(lái)說(shuō),它是一個(gè)非常有用的 JavaScript 庫(kù)。無(wú)論是剛剛接觸 JavaScript 語(yǔ)言,并且希望獲得一個(gè)能解決文檔對(duì)象模型(Document Object Model,DOM)腳本和 Ajax 開(kāi)發(fā)中一些復(fù)雜問(wèn)題的庫(kù),還是作為一個(gè)厭倦了 DOM 腳本和 Ajax 開(kāi)發(fā)中無(wú)聊的重復(fù)工作的資深
32、JavaScript 專家,jQuery 都是首選[5]。</p><p> jQuery 能保證代碼簡(jiǎn)潔易讀。再也不必編寫(xiě)大堆重復(fù)的循環(huán)代碼和 DOM 腳本庫(kù)調(diào)用了。使用 jQuery,可以把握問(wèn)題的要點(diǎn),并使用盡可能最少的代碼實(shí)現(xiàn)功能。[5]</p><p> 毫無(wú)疑問(wèn),jQuery 的原理是獨(dú)一無(wú)二的:它的目的就是保證代碼簡(jiǎn)潔并可重用。</p><p>
33、 主要作用:jQuery庫(kù)為共同的web腳本提供了一種通用的抽象層,使用其特定的語(yǔ)法定義,這些核心特性能滿足以下需求:</p><p> 1、獲取頁(yè)面的部分內(nèi)容</p><p> 不適用JavaScript庫(kù),必須寫(xiě)很多代碼來(lái)遍歷DOM樹(shù),并定位一個(gè)HTML文檔的指定部分。jQuery提供了一個(gè)強(qiáng)大而有效的選擇機(jī)制來(lái)返回被檢查或被操作的文檔。</p><p>&
34、lt;b> 2、修改頁(yè)面的外觀</b></p><p> jQuery可改變文檔一部分中的類或獨(dú)立的樣式屬性,方便配合CSS使用。</p><p><b> 3、修改頁(yè)面的內(nèi)容</b></p><p> jQuery可以用很少的按鍵就可修改文檔的內(nèi)容本身。文本可改變,圖像可插入或替換,列表可重新排序或整個(gè)HTML結(jié)構(gòu)被
35、重寫(xiě)和擴(kuò)展。</p><p> 4、在頁(yè)面中響應(yīng)用戶的交互</p><p> jQuery庫(kù)提供了一個(gè)優(yōu)雅的方法來(lái)截取很多事件,而不需要將事件句柄混雜到HTML代碼中。同時(shí),事件句柄API也解決了瀏覽器標(biāo)準(zhǔn)不一致的問(wèn)題。</p><p><b> 5、給頁(yè)面加上動(dòng)畫(huà)</b></p><p> jQuery提供了一
36、組效果來(lái)實(shí)現(xiàn)動(dòng)畫(huà),而提供有效的交互行為。</p><p> 6、無(wú)刷新返回服務(wù)器端的信息</p><p> 也就是AJAX應(yīng)用,協(xié)助web開(kāi)發(fā)者制作可響應(yīng)的功能豐富的網(wǎng)站。</p><p> 7、簡(jiǎn)化共同的JavaScript任務(wù)</p><p> 除了jQuery指定的文檔特性外,這個(gè)庫(kù)還提供了改進(jìn)基本JavaScript結(jié)構(gòu),如迭
37、代和數(shù)組操作。</p><p> 2.5 JSP的技術(shù)應(yīng)用</p><p> 2.5.1 JSP的強(qiáng)勢(shì)與劣勢(shì)</p><p><b> JSP的強(qiáng)勢(shì):</b></p><p> ?。?)可移植性??梢砸惶幘帉?xiě),隨處運(yùn)行,支持多平臺(tái)。因?yàn)镴SP是用Java開(kāi)發(fā)的,它是可移植的?;旧峡梢栽谒衅脚_(tái)上的任意環(huán)境中開(kāi)發(fā),
38、在任意環(huán)境中進(jìn)行系統(tǒng)部署,在任意環(huán)境中擴(kuò)展。除了系統(tǒng)之外,代碼不用做任何更改。</p><p> (2)有效性。一般處理一個(gè)請(qǐng)求都要全部加載一個(gè)完整的可執(zhí)行程序,而JSP的初始化代碼僅在Web服務(wù)器第一次加載時(shí)執(zhí)行一次。一旦加載,在處理一個(gè)新的請(qǐng)求時(shí),只須調(diào)用一個(gè)新的服務(wù)方法。與一般請(qǐng)求處理相比,這是一個(gè)相當(dāng)有效的技術(shù)。</p><p> ?。?)強(qiáng)大的可伸縮性和可擴(kuò)充性。為了更好地滿足
39、用戶的需求,JSP設(shè)計(jì)是在面向?qū)ο蟮恼Z(yǔ)言(Java)中進(jìn)行開(kāi)發(fā)的,并且也可以在現(xiàn)有對(duì)象基礎(chǔ)上進(jìn)行擴(kuò)展,形成新的對(duì)象。</p><p> ?。?)多樣化和功能強(qiáng)大的開(kāi)發(fā)工具支持。Java已經(jīng)有了許多非常優(yōu)秀的開(kāi)發(fā)工具,而且許多可以免費(fèi)得到,并且其中許多已經(jīng)可以順利的運(yùn)行于多種平臺(tái)之下。</p><p> ?。?)Java Servlet是一種開(kāi)發(fā)Web應(yīng)用的理想框架。JSP以Servlet技
40、術(shù)為基礎(chǔ),而且大型的Web應(yīng)用程序的開(kāi)發(fā)需要Java Servlet和JSP配合才能完成。JSP將網(wǎng)頁(yè)邏輯與網(wǎng)頁(yè)設(shè)計(jì)和顯示分離,支持可重用的基于組件的設(shè)計(jì),使基于Web的應(yīng)用程序的開(kāi)發(fā)變得迅速和容易。JSP的劣勢(shì):</p><p> (1)極大的增加了產(chǎn)品的復(fù)雜性。因?yàn)榕cASP一樣,Java的一些優(yōu)勢(shì)正是它致命的問(wèn)題所在。正是由于為了跨平臺(tái)的功能,為了極度的伸縮能力。</p><p>
41、 (2) Java的運(yùn)行速度是用class常駐內(nèi)存來(lái)完成的,所以它在一些情況下所使用的內(nèi)存比起用戶數(shù)量來(lái)說(shuō)確實(shí)是“最低性能價(jià)格比”了。從另一方面,它還需要硬盤(pán)空間來(lái)儲(chǔ)存一系列的。java文件和。class文件,以及對(duì)應(yīng)的版本文件。</p><p> ?。?)JSP只有對(duì)Java相當(dāng)熟悉的人才能用得很好。</p><p> ?。?)JSP程序調(diào)試?yán)щy。</p><p>
42、; 2.5.2 JSP與ASP的比較</p><p> JSP與ASP(Active Server Page)兩者都是常用的動(dòng)態(tài)網(wǎng)頁(yè)技術(shù),也都是可以嵌入HTML中的程序,但兩者是有著本質(zhì)的不同,主要從以下幾個(gè)方面對(duì)其進(jìn)行比較: </p><p> (1)結(jié)構(gòu):JSP和ASP在結(jié)構(gòu)上是類似的,都是以""作為標(biāo)計(jì)符,不同的是在標(biāo)計(jì)符之間的代碼ASP為JavaScrip
43、t或VBScript腳本,而JSP為Java代碼。 </p><p> ?。?)平臺(tái)的支持:JSP具有平臺(tái)獨(dú)立性,只要是一般的Java程序可以運(yùn)行的平臺(tái),都支持JSP程序。Windows平臺(tái)可以很好的支持ASP,但ASP對(duì)于基于Win32逐漸模型的依賴,使得它難于一直到其它平臺(tái)上。 </p><p> ?。?)組件模型:JSP是建立在可重用的、跨平臺(tái)的組件(如:JavaBeans、Ente
44、rprises JavaBeans 和用戶定制的標(biāo)簽庫(kù)等組件)之上的,而ASP使用的是基于Win32的COM組件模型。 </p><p> ?。?)Session管理:為了跟蹤用戶的操作狀態(tài),ASP應(yīng)用SESSION對(duì)象。JSP使用一個(gè)叫HttpSession的對(duì)象實(shí)現(xiàn)同樣的功能。Session 信息保存在服務(wù)器端,Session的id保存在客戶機(jī)的cookie中。 </p><p>
45、(5)安全性:JSP使用Java安全模型,而ASP使用Windows NT的安全結(jié)構(gòu)。 </p><p> ?。?)與Access數(shù)據(jù)庫(kù)的連接:JSP使用JDBC建立與Access數(shù)據(jù)庫(kù)的連接,而ASP對(duì)Access數(shù)據(jù)庫(kù)使用Data Active Objects。 </p><p> ?。?)用戶定制的標(biāo)簽:JSP可以使用用戶定制標(biāo)簽庫(kù)進(jìn)行擴(kuò)充,而ASP中沒(méi)有用戶定制標(biāo)簽庫(kù),ASP是不能
46、擴(kuò)充的。</p><p> 2.6 J2EE概述與發(fā)展</p><p> J2EE(Java 2 Platform Enterprise Edition)是使用Java技術(shù)開(kāi)發(fā)企業(yè)級(jí)應(yīng)用的一種事實(shí)上的工業(yè)標(biāo)準(zhǔn)(Sun公司出于其自身利益的考慮,至今沒(méi)有將Java及其相關(guān)技術(shù)納入標(biāo)準(zhǔn)化組織的體系),它是Java技術(shù)不斷適應(yīng)和促進(jìn)企業(yè)級(jí)應(yīng)用過(guò)程中的產(chǎn)物。目前,Java平臺(tái)有三個(gè)版本:適用于小
47、型設(shè)備和智能卡的J2ME(Java 2 Platform Micro Edition)、適用于桌面系統(tǒng)的J2SE(Java 2 Platform Standard Edition)和適用于企業(yè)級(jí)應(yīng)用的J2EE(Java 2 Platform Enterprise Edition)。Sun推出J2EE的目的是為了克服傳統(tǒng)Client/Server模式的弊病,迎合Browser/Server架構(gòu)的潮流,為應(yīng)用Java技術(shù)開(kāi)發(fā)服務(wù)器端應(yīng)用提供
48、一個(gè)平臺(tái)獨(dú)立的、可移植的、多用戶的、安全的和基于標(biāo)準(zhǔn)的企業(yè)級(jí)平臺(tái),從而簡(jiǎn)化企業(yè)應(yīng)用的開(kāi)發(fā)、管理和部署。J2EE是一個(gè)標(biāo)準(zhǔn),而不是一個(gè)現(xiàn)成的產(chǎn)品。J2EE體系結(jié)構(gòu)提供中間層集成框架用來(lái)滿足無(wú)需太多費(fèi)用而又需要高可用性、高可靠性以及可擴(kuò)展性的應(yīng)用的需</p><p> ?。?)高效的開(kāi)發(fā): J2EE允許公司把一些通用的、很繁瑣的服務(wù)端任務(wù)交給中間件供應(yīng)商去完成這樣開(kāi)發(fā)人員可以集中精力在如何創(chuàng)建商業(yè)邏輯上,相應(yīng)地縮短了
49、開(kāi)發(fā)時(shí)間。高級(jí)中間件供應(yīng)商提供以下這些復(fù)雜的中間件服務(wù):狀態(tài)管理服務(wù) -- 讓開(kāi)發(fā)人員寫(xiě)更少的代碼,不用關(guān)心如何管理狀態(tài),這樣能夠更快地完成程序開(kāi)發(fā)。</p><p> ?。?)持續(xù)性服務(wù) : 讓開(kāi)發(fā)人員不用對(duì)數(shù)據(jù)訪問(wèn)邏輯進(jìn)行編碼就能編寫(xiě)應(yīng)用程序,能生成更輕巧,與數(shù)據(jù)庫(kù)無(wú)關(guān)的應(yīng)用程序,這種應(yīng)用程序更易于開(kāi)發(fā)與維護(hù)。分布式共享數(shù)據(jù)對(duì)象CACHE服務(wù),讓開(kāi)發(fā)人員編制高性能的系統(tǒng),極大提高整體部署的伸縮性。</p
50、><p> (3)支持異構(gòu)環(huán)境: J2EE能夠開(kāi)發(fā)部署在異構(gòu)環(huán)境中的可移植程序?;贘2EE的應(yīng)用程序不依賴任何特定操作系統(tǒng)、中間件、硬件。因此設(shè)計(jì)合理的基于J2EE的程序只需開(kāi)發(fā)一次就可部署到各種平臺(tái)。這在典型的異構(gòu)企業(yè)計(jì)算環(huán)境中是十分關(guān)鍵的。J2EE標(biāo)準(zhǔn)也允許客戶訂購(gòu)與J2EE兼容的第三方的現(xiàn)成的組件,把他們部署到異構(gòu)環(huán)境中,節(jié)省了由自己制訂整個(gè)方案所需的費(fèi)用。</p><p> ?。?
51、)可伸縮性:企業(yè)必須要選擇一種服務(wù)器端平臺(tái),這種平臺(tái)應(yīng)能提供極佳的可伸縮性去滿足那些在他們系統(tǒng)上進(jìn)行商業(yè)運(yùn)作的大批新客戶?;贘2EE平臺(tái)的應(yīng)用程序可被部署到各種操作系統(tǒng)上。例如可被部署到高端UNIX與大型機(jī)系統(tǒng),這種系統(tǒng)單機(jī)可支持64至256個(gè)處理器。(這是NT服務(wù)器所望塵莫及的)J2EE領(lǐng)域的供應(yīng)商提供了更為廣泛的負(fù)載平衡策略。能消除系統(tǒng)中的瓶頸,允許多臺(tái)服務(wù)器集成部署。這種部署可達(dá)數(shù)千個(gè)處理器,實(shí)現(xiàn)可高度伸縮的系統(tǒng),滿足未來(lái)商業(yè)應(yīng)
52、用的需要。</p><p> ?。?)穩(wěn)定的可用性: 一個(gè)服務(wù)器端平臺(tái)必須能全天候運(yùn)轉(zhuǎn)以滿足公司客戶、合作伙伴的需要。這是實(shí)時(shí)性很強(qiáng)商業(yè)系統(tǒng)理想的選擇[5]。</p><p> 第3章“當(dāng)當(dāng)網(wǎng)”電子商務(wù)網(wǎng)站設(shè)計(jì)與開(kāi)發(fā)</p><p><b> 3.1 概要設(shè)計(jì)</b></p><p> 3.1.1 基于B/S的多層
53、次結(jié)構(gòu)</p><p> 系統(tǒng)采用基于B/S的多層次結(jié)構(gòu)設(shè)計(jì),適合信息的查詢和組織,易于與其它應(yīng)用集成;便于滿足用戶不同層次的服務(wù),應(yīng)用擴(kuò)展電子商務(wù)網(wǎng)站且便利;多層次設(shè)計(jì)減輕了客戶端與數(shù)據(jù)庫(kù)服務(wù)器的負(fù)擔(dān),提供了高效的運(yùn)行時(shí)性能;且具有方便易用的Internet信息發(fā)布平臺(tái),便于信息公布! </p><p> 3.1.2 開(kāi)發(fā)環(huán)境及工具</p><p><
54、;b> 操作系統(tǒng):</b></p><p> 可支持Windows95/98/Xp/NT、Windows2000/2003等。</p><p><b> 開(kāi)發(fā)工具:</b></p><p> 采用jsp+Servlet+struts1+Hibernate+MySql開(kāi)發(fā)。</p><p> 3
55、.1.3“ 當(dāng)當(dāng)網(wǎng)”電子商務(wù)項(xiàng)目規(guī)劃</p><p> 當(dāng)當(dāng)網(wǎng)電子商務(wù)購(gòu)書(shū)系統(tǒng)由登陸注冊(cè)模塊、分類排序查詢模塊、購(gòu)物車模塊、訂單管理模塊組成,各個(gè)模塊的功能如下所示:</p><p> 登陸注冊(cè)模塊:主要就是添加新用戶,驗(yàn)證用戶登錄系統(tǒng)!</p><p> 分類排序查詢模塊:主要是對(duì)圖書(shū)按出版年月,書(shū)名,作者等關(guān)鍵字進(jìn)行排序查詢,</p><
56、;p> 便于顧客查詢自己所需的圖書(shū)!</p><p> 購(gòu)物車模塊:主要是用于顧客存放所購(gòu)的書(shū),可以更改同一商品的數(shù)量!</p><p> 訂單模塊:主要是用于顧客結(jié)算商品的總價(jià)格,并需要填寫(xiě)訂單相應(yīng)的信息!</p><p> 3.1.4 功能圖解</p><p> 系統(tǒng)功能圖如圖3.1所示。</p><p
57、> 圖3.1當(dāng)當(dāng)網(wǎng)購(gòu)書(shū)系統(tǒng)圖解</p><p> 3.1.5 數(shù)據(jù)庫(kù)設(shè)計(jì)</p><p> 在科研成果系統(tǒng)中,我一共設(shè)計(jì)了6張表,其中用戶表是在登陸注冊(cè)模塊中的,其它5張表是在項(xiàng)目模塊中的。</p><p> 數(shù)據(jù)庫(kù)表圖如圖3.2所示:</p><p> 圖3.2數(shù)據(jù)庫(kù)表設(shè)計(jì)</p><p> 3.1
58、.6 數(shù)據(jù)表的設(shè)計(jì)</p><p> 下面列出了設(shè)計(jì)過(guò)程中所用到的數(shù)據(jù)庫(kù)表及其結(jié)構(gòu):</p><p> 用戶表d_d_user用來(lái)保存用戶個(gè)人的基本信息,如表3.1所示。</p><p> 表3.1 d_d_user用戶表</p><p> 圖書(shū)表d_d_book用來(lái)保存圖書(shū)的基本信息,如表3.2所示。</p><
59、p> 表3.2 d_d_book圖書(shū)表</p><p> 分類表d_d_category用來(lái)保存圖書(shū)分類模板的基本信息,如表3.3所示。</p><p> 表3.3 d_d_category分類表</p><p> 條目表d_d_item用來(lái)保存購(gòu)物車商品條目的基本信息,如表3.4所示。</p><p> 表3.4 d_d_i
60、tem條目表</p><p> 訂單表d_d_order用來(lái)保存訂單的基本信息,如表3.5所示;</p><p> 表3.5 d_d_order訂單表</p><p> 產(chǎn)品表d_d_product用來(lái)保存產(chǎn)品的基本信息,如表3.6;</p><p> 表3.6 d_d_product產(chǎn)品表</p><p>
61、 3.1.7 框架設(shè)計(jì) </p><p> 當(dāng)當(dāng)網(wǎng)購(gòu)書(shū)系統(tǒng)基于MVC模式,整個(gè)系統(tǒng)采用Browser(瀏覽器)/Web(網(wǎng)絡(luò))/Database(數(shù)據(jù)庫(kù))的三層體系結(jié)構(gòu)。用戶可以通過(guò)瀏覽器Browser(客戶端)發(fā)送請(qǐng)求給Web服務(wù)器,這時(shí)運(yùn)行在對(duì)應(yīng)服務(wù)器中的Servlet會(huì)接收請(qǐng)求。該購(gòu)書(shū)系統(tǒng)中的Servlet被用作應(yīng)用程序的前端控制器,jsp界面是作為視圖,JavaBean是用來(lái)作為模型,Servlet前端
62、控制器則是用來(lái)接收用戶發(fā)送過(guò)來(lái)的所有請(qǐng)求,根據(jù)用戶發(fā)送過(guò)來(lái)的請(qǐng)求調(diào)用并在瀏覽器上顯示對(duì)應(yīng)的jsp頁(yè)面。為了方便操作,Servlet前端控制器有時(shí)還會(huì)根據(jù)jsp頁(yè)面的需要產(chǎn)生JavaBean實(shí)例給JSP頁(yè)面使用。Jsp頁(yè)面也可以直接調(diào)用方法來(lái)顯示對(duì)應(yīng)的界面。這種方式使得商品在增加、修改數(shù)量、刪除和恢復(fù)操作時(shí),即時(shí)將結(jié)果返回給用戶!滿足用回對(duì)系統(tǒng)的實(shí)時(shí)性要求!項(xiàng)目整體流線圖如圖3.3所示:</p><p><b
63、> 圖3.3項(xiàng)目流程圖</b></p><p> 3.2 與用戶互動(dòng)性設(shè)計(jì)</p><p> 為提高網(wǎng)站的交互和用戶的友好性,UI層加入了form,使得用戶在填寫(xiě)注冊(cè)信息的時(shí),然后有些地方?jīng)]有按照規(guī)定填寫(xiě)就提交了,那么之前填寫(xiě)的信息就不會(huì)消失掉,會(huì)保持在編輯框內(nèi);如果不采用form,那么提交后,然后系統(tǒng)發(fā)現(xiàn)填寫(xiě)的一些信息沒(méi)有符合要求,就直接會(huì)消失掉,用戶就要重新填寫(xiě)
64、之前的信息,這樣會(huì)比較浪費(fèi)用戶的時(shí)間,所以用了form機(jī)制,當(dāng)發(fā)生類似的情況,則可以節(jié)省用戶很多的時(shí)間,方便注冊(cè)用戶。</p><p> 用戶填寫(xiě)Email地址,昵稱,密碼和第二次輸入密碼和驗(yàn)證碼時(shí),點(diǎn)擊注冊(cè)提交,部分刷新頁(yè)面,直接在下邊管理列表中刷新出提交的內(nèi)容,避免每次都是刷新全部頁(yè)面,如圖3.4所示。</p><p><b> 圖3.4注冊(cè)界面</b><
65、;/p><p> 2.為了使網(wǎng)頁(yè)增加互動(dòng)性和生動(dòng)性,我在系統(tǒng)中加入了JavaScript表單驗(yàn)證,對(duì)提交的表單做即時(shí)的檢查驗(yàn)證,無(wú)需浪費(fèi)時(shí)間交由CGI驗(yàn)證。而JavaScript它是一種基于對(duì)象和事件驅(qū)動(dòng)并具有安全性能的腳本語(yǔ)言,它最大的優(yōu)點(diǎn)就是嵌入或調(diào)入在標(biāo)準(zhǔn)的HTML語(yǔ)言中實(shí)現(xiàn)。注冊(cè)表單用戶名驗(yàn)證如圖3.5所示:</p><p> 如果用戶未填寫(xiě)Email地址就移動(dòng)光標(biāo),這時(shí)候,會(huì)跳出
66、一行紅色提示語(yǔ),提示用戶注冊(cè)郵箱必須填寫(xiě)。</p><p> 圖3.5 注冊(cè)驗(yàn)證 </p><p> 其它的當(dāng)當(dāng)網(wǎng)昵稱,設(shè)置密碼,再次設(shè)置密碼和驗(yàn)證碼沒(méi)填寫(xiě)的話,都會(huì)給出相應(yīng)的紅色字體的提示,來(lái)提示用戶該填的信息必須填寫(xiě)。注冊(cè)表單中第一次設(shè)置密碼和第二次設(shè)置的密碼必須一致的驗(yàn)證如圖3.6所示:</p><p> 如果兩次輸入的密碼不一致,系統(tǒng)會(huì)跳出一行紅色提示
67、字體,來(lái)提示這兩次密碼輸入不一致,必須重新填寫(xiě)一致為止。</p><p> 圖 3.6 注冊(cè)密碼驗(yàn)證</p><p> 在當(dāng)當(dāng)網(wǎng)購(gòu)書(shū)系統(tǒng)中servlet還兼具了另一個(gè)小作用:就是驗(yàn)證碼,我在注冊(cè)表中加入了驗(yàn)證碼。采用的是圖片驗(yàn)證碼,它是包含無(wú)規(guī)律字符信息的圖片。普通用戶用肉眼就可以辨認(rèn)其中的字符信息。JSP技術(shù)是使用Java編程語(yǔ)言編寫(xiě)類XML的tags和scriptlets,來(lái)封裝產(chǎn)
68、生動(dòng)態(tài)網(wǎng)頁(yè)的處理邏輯。網(wǎng)頁(yè)還能通過(guò)tags和scriptlets訪問(wèn)存在于服務(wù)端的資源的應(yīng)用邏輯。JSP將網(wǎng)頁(yè)邏輯與網(wǎng)頁(yè)設(shè)計(jì)和顯示分離,支持可重用的基于組件的設(shè)計(jì),使基于Web的應(yīng)用程序的開(kāi)發(fā)變得迅速和容易。</p><p> 驗(yàn)證碼圖3.7如圖所示:</p><p><b> 圖3.7驗(yàn)證碼</b></p><p> 驗(yàn)證碼主要是防止有
69、人惡意的用sql注入來(lái)不斷的創(chuàng)新新用戶增加數(shù)據(jù)庫(kù)的壓力。我把驗(yàn)證碼的代碼寫(xiě)進(jìn)一個(gè)ImageServlet類中:</p><p> 具體驗(yàn)證碼的代碼如下:</p><p> public class ImageServlet extends HttpServlet {</p><p> public void doGet(HttpServletRequest r
70、equest, HttpServletResponse response)</p><p> throws ServletException, IOException {</p><p> HttpSession session = request.getSession();</p><p> response.setContentType("ima
71、ge/jpeg");</p><p> BufferedImage image = new BufferedImage(60, 20,</p><p> BufferedImage.TYPE_INT_RGB);</p><p> Random r = new Random();</p><p> Graphics g = i
72、mage.getGraphics();</p><p> g.setColor(new Color(r.nextInt(255), r.nextInt(255), r.nextInt(255)));</p><p> g.fillRect(0, 0, 60, 20);</p><p> g.setColor(new Color(0,0,0));</p&g
73、t;<p> String number = String.valueOf(r.nextInt(99999)); </p><p> session.setAttribute("number", number);</p><p> g.drawString(number, 5, 15);</p><p> OutputStr
74、eam ox = response.getOutputStream();</p><p> JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(os);</p><p> encoder.encode(image);</p><p><b> }</b></p>&l
75、t;p><b> }</b></p><p><b> 3.3 模塊設(shè)計(jì)</b></p><p> 當(dāng)當(dāng)網(wǎng)購(gòu)書(shū)系統(tǒng)共分成了4個(gè)模塊:登陸注冊(cè)模塊、分類排序查詢模塊、購(gòu)物車模塊、訂單管理模塊。</p><p> 3.3.1登陸注冊(cè)模塊</p><p> 如果是第一次訪問(wèn)當(dāng)當(dāng)網(wǎng)購(gòu)書(shū)系統(tǒng)的
76、必須要注冊(cè)一個(gè)賬號(hào)才可以登錄,也只有用戶登錄后才能購(gòu)買相應(yīng)圖書(shū)和訂單付款,在這個(gè)模塊中主要是建了一個(gè)用戶表d_d_user,用于存儲(chǔ)用戶的注冊(cè)所對(duì)應(yīng)的信息。當(dāng)用戶登錄時(shí),在文本框輸入的用戶名和密碼,要與數(shù)據(jù)庫(kù)內(nèi)對(duì)應(yīng)存儲(chǔ)的數(shù)據(jù)一致才能登錄,否則會(huì)跳出紅色文字提示,提示用戶名或密碼錯(cuò)誤,提醒用戶重新輸入。</p><p> 登錄時(shí)用戶名和密碼驗(yàn)證如圖3.8所示。</p><p><b&
77、gt; 圖3.8登錄驗(yàn)證</b></p><p> 如果用戶成功登錄后,在當(dāng)當(dāng)網(wǎng)購(gòu)書(shū)系統(tǒng)首頁(yè)左上角中會(huì)顯示登錄的用戶名,說(shuō)明該用戶已經(jīng)登錄,同時(shí)還有一個(gè)登出按鈕,用戶隨時(shí)可以登出,即退出登錄。登錄后效果如圖3.9所示。</p><p> 圖 3.9 登錄后狀態(tài)</p><p> 用戶在購(gòu)?fù)陥D書(shū),結(jié)算過(guò)之后,然后會(huì)點(diǎn)擊登出按鈕來(lái)退出登錄,這是首頁(yè)的
78、左上角而顯示注冊(cè)和登錄的按鈕,用戶隨時(shí)可以注冊(cè),并在注冊(cè)完后登錄去系統(tǒng)購(gòu)書(shū)。登出后效果如圖3.10所示。</p><p> 圖3.10 未登錄狀態(tài)</p><p> 登錄和登出的實(shí)現(xiàn)在一個(gè)Jsp文件中,主要是定義一個(gè)boolean類型屬性islogin來(lái)保存用戶是否已經(jīng)登錄,并把它保存在Request中,具體的代碼如下:</p><p> <span i
79、d="login_info"> <b>您好${sessionScope.session_user.nickname},歡迎光臨當(dāng)當(dāng)網(wǎng)</b></p><p> <c:choose></p><p> <c: when test="${requestScope.islogin}"></p&
80、gt;<p> [ <a href="javascript:;"</p><p> onclick="load('logout.do',$('login_info').parentNode)" class="b">登出</a></p><p&
81、gt;<b> ] </b></p><p><b> </c:when></b></p><p> <c: otherwise></p><p><b> [ </b></p><p> <a hr
82、ef="login_form.do" class="b">登錄</a></p><p><b> |</b></p><p> <a href="register_one.do" class="b">注冊(cè)</a></p><
83、p><b> ]</b></p><p> </c: otherwise></p><p> </c: choose> </span></p><p> 3.3.2分類排序查詢模塊</p><p> 這個(gè)模塊主要是便于用戶查詢自己所需的圖書(shū),節(jié)省客戶
84、的時(shí)間,該模塊又可分為以下三個(gè)小模塊:圖書(shū)分類瀏覽,按關(guān)鍵字排序和分頁(yè)查詢。</p><p><b> ?。?)圖書(shū)分類瀏覽</b></p><p> 圖書(shū)分類可以按層次分為二級(jí)分類和三級(jí)分類,二級(jí)分類有:小說(shuō),青春,人文社科,管理,少兒和外語(yǔ)等,每個(gè)二級(jí)分類下又有一定數(shù)量的三級(jí)分類,層次分明,便于搜索,給用戶節(jié)省了一定的時(shí)間和精力,如圖3.11所示。</p&
85、gt;<p> 圖3.11圖書(shū)分類瀏覽</p><p><b> 具體代碼如下:</b></p><p> <c:forEach items="${cat.subCategory }" var="cat2"></p><p> <div class="bg
86、_old" onmouseover="this.className= 'bg_white';"onmouseout="this.className = 'bg_old';"></p><p><b> <h3></b></p><p><b> [<
87、/b></p><p> <a href="booklist.do?down_id=${cat2.subCategory[0].id }&upper_id=${cat2.id }">${cat2.cn_name }</a> ]</p><p><b> </h3></b></p>
88、<p> <ul class="ul_left_list"></p><p> <c:forEach items="${cat2.subCategory}" var="cat3"></p><p><b> <li></b></p><p
89、> <a href="booklist.do?down_id=${cat3.id }&upper_id=${cat2.id }">${cat3.cn_name }</a></p><p><b> </li></b></p><p> </c:forEach></p>
90、<p><b> ?。?)按關(guān)鍵字排序</b></p><p> 圖書(shū)的排序方式有按默認(rèn)排序,按價(jià)格升降排序,按出版時(shí)間升降排序,按上架時(shí)間升降排序,客戶根據(jù)自己不同的需求,選擇最適合的一種排序方式,這樣則更快找到自己最需要的圖書(shū)。如圖3.12所示。</p><p> 圖3.12圖書(shū)按關(guān)鍵字排序</p><p><b>
91、; 具體代碼如下:</b></p><p> <div class="list_r_title_text"></p><p><b> 排序方式</b></p><p><b> </div></b></p><p> <htm
92、l:form action="booklist.do"></p><p> <html:select onchange="location='booklist.do?order='+this.value"</p><p> property='order' size='1' styleC
93、lass='list_r_title_ml'></p><p> <c:forEach items="${map}" var="map1"></p><p> <html:option style='color:#c3c3c3' value='${map1.key }'>
94、;</p><p> <bean:message key="${map1.value}"/></p><p> </html:option></p><p> </c:forEach></p><p> </html:select></p><p&
95、gt; </html:form></p><p><b> (3)圖書(shū)分頁(yè)查詢</b></p><p> 當(dāng)圖書(shū)超過(guò)一定數(shù)量時(shí),一頁(yè)書(shū)架可能擺不下,所以這時(shí)要把多余的書(shū)擺在第二頁(yè)或更后面的頁(yè)面書(shū)架上。這樣的分頁(yè)查詢雖然效率不高,但是很實(shí)用,一目了然,也會(huì)便于客戶搜索所需的圖書(shū)。當(dāng)前頁(yè)面是第一頁(yè)時(shí),那么前一頁(yè)的按鈕會(huì)失去鏈接功能,如圖3-13所示。同理
96、,當(dāng)前頁(yè)面是最后一頁(yè)時(shí),那么下一頁(yè)的按鈕也會(huì)失去鏈接功能,如圖3-14所示。</p><p> 圖3.13書(shū)架在第一頁(yè)時(shí)</p><p> 圖3.14書(shū)架在最后一頁(yè)時(shí)</p><p><b> 具體代碼如下:</b></p><p> <c:choose></p><p>
97、<c:when test="${bookform.page gt 1}"></p><p> <div class='list_r_title_text3a'></p><p> <a name=link_page_next href="booklist.do?page=${bookform.page-1
98、}"></p><p> <imgsrc='<%=request.getContextPath()%>/images/page_up.gif' /> </a></p><p><b> </div></b></p><p><b>
99、</c:when></b></p><p> <c: otherwise></p><p> <div class='list_r_title_text3a'></p><p> <imgsrc='<%=request.getContextPath()%>
100、;/images/page_up_gray.gif' /></p><p><b> </div></b></p><p> </c:otherwise></p><p> </c:choose></p><p> <div class='list_
101、r_title_text3b'></p><p> 第${bookform.page }頁(yè)/共${totalpages }頁(yè)</p><p><b> </div></b></p><p> <c:choose></p><p> <c:when test="
102、${bookform.page eq totalpages}"></p><p> <div class='list_r_title_text3a'></p><p> <img src='<%=request.getContextPath()%>/images/page_down_gray.gif' /&g
103、t;</p><p><b> </div></b></p><p><b> </c:when></b></p><p> <c:otherwise></p><p> <div class='list_r_title_text3a'
104、;></p><p> <a name=link_page_next href="booklist.do?page=${bookform.page+1 }"></p><p> <imgsrc='<%=request.getContextPath()%>/images/page_down.gif'
105、; /></p><p><b> </a></b></p><p><b> </div></b></p><p> </c:otherwise></p><p> </c:choose></p><p> 3
106、.3.3購(gòu)物車管理模塊</p><p> 用戶只有在登錄后才能購(gòu)買書(shū)店中的圖書(shū),未登錄的用戶在點(diǎn)擊購(gòu)買時(shí)會(huì)跳轉(zhuǎn)到登錄界面,讓用戶去登錄購(gòu)買,沒(méi)有賬號(hào)的用戶也可以直接注冊(cè)一個(gè)新賬號(hào)去登錄購(gòu)買所需的商品。</p><p> 當(dāng)當(dāng)網(wǎng)購(gòu)書(shū)系統(tǒng)中購(gòu)物車管理模塊主要功能有如下幾個(gè)部分:</p><p><b> 1.創(chuàng)建一個(gè)購(gòu)物車</b></p
107、><p> 當(dāng)用戶登錄后,購(gòu)書(shū)系統(tǒng)會(huì)自動(dòng)創(chuàng)建一個(gè)購(gòu)物車給登錄的客戶,然后把購(gòu)物車放在服務(wù)器一個(gè)session會(huì)話中,這樣用戶在整個(gè)會(huì)話中都會(huì)用相同的一個(gè)購(gòu)物車,在購(gòu)買商品時(shí),都把商品放在這個(gè)購(gòu)物車中。這里主要運(yùn)用了Http協(xié)議中的session會(huì)話機(jī)制,將購(gòu)物車保存在客戶的session會(huì)話中,這樣在整個(gè)用戶瀏覽不同頁(yè)面商品的過(guò)程中,都會(huì)使用同一個(gè)購(gòu)物車對(duì)象。 具體執(zhí)行的步驟如下:</p><p
108、> 在用戶登錄后,從用戶的請(qǐng)求對(duì)象中獲取Session會(huì)話對(duì)象</p><p> 從Session會(huì)話對(duì)象中獲取之前的購(gòu)物車對(duì)象</p><p> 判斷之前的購(gòu)物車對(duì)象是不是為空,如果是空就創(chuàng)建一個(gè)新的購(gòu)物車對(duì)象</p><p><b> 具體代碼如下:</b></p><p> HttpSession
109、session = request.getSession();</p><p> String userId = CookieUtils.findCookie(request,</p><p> ContantUtils.CID_USER_ID);</p><p> UserDao dao = UserDaoFactory.getUserDao();</
110、p><p> User user = dao.findUserById(Integer.parseInt(userId));</p><p> CartService cart = (CartService) session</p><p> .getAttribute(ContantUtils.SID_CART);</p><p> i
111、f (cart == null) {</p><p> cart = new CartService(user.getId());</p><p> String cartStr = CookieUtils.findCookie(request,</p><p> ContantUtils.CID_CART);</p><p> Sy
112、stem.out.println(cartStr);</p><p> if (cartStr != null) {</p><p> System.out.println("=====Hello");</p><p> cart.load(cartStr);</p><p><b> }</b&g
113、t;</p><p> session.setAttribute(ContantUtils.SID_CART, cart);</p><p><b> }</b></p><p> return cart;</p><p> 向已創(chuàng)建購(gòu)物車中添加一個(gè)商品項(xiàng)</p><p> 已經(jīng)登錄的用
114、戶在網(wǎng)頁(yè)上看到自己所需的商品時(shí),當(dāng)用戶點(diǎn)擊購(gòu)買的按鈕時(shí),會(huì)向服務(wù)器發(fā)送一個(gè)“添加到購(gòu)物車”的請(qǐng)求,然后執(zhí)行這個(gè)功能。</p><p><b> 功能執(zhí)行過(guò)程如下:</b></p><p> (1)從用戶Request請(qǐng)求對(duì)象中獲取商品的ID(Product ID)</p><p> (2)調(diào)用業(yè)務(wù)層(service)中的方法,然后根據(jù)商品
115、ID到數(shù)據(jù)庫(kù)中查詢</p><p> 品的信息,并返回商品對(duì)象</p><p> (3)從返回的商品對(duì)象中獲取商品名,商品價(jià)格,來(lái)構(gòu)建一個(gè)商品項(xiàng)對(duì)象</p><p> (4)從Session會(huì)話中獲取購(gòu)物車對(duì)象</p><p> (5)調(diào)用業(yè)務(wù)層(service)的方法來(lái)根據(jù)購(gòu)物車對(duì)象和商品項(xiàng)對(duì)象來(lái)執(zhí) </p><
116、p><b> 行添加操作</b></p><p> (6)將購(gòu)買的商品項(xiàng)對(duì)象放入到同一購(gòu)物車中</p><p> 從數(shù)據(jù)庫(kù)取到商品對(duì)象代碼如下:</p><p> Session session = Hbutils.getSession();</p><p> Query query = session.
117、createQuery("select </p><p> new Product(p.id,p.product_name,p.fixed_price,p.dang_price) from Product p");</p><p> List list = query.list();</p><p> if (list.size() >
118、; 1) {</p><p> return (Product) list.get(productId-1);</p><p> 當(dāng)當(dāng)網(wǎng)購(gòu)書(shū)系統(tǒng)在向購(gòu)物車中添加商品的時(shí)會(huì)判斷商品條目是否已經(jīng)存在,若已存在的就不讓在加入,具體代碼實(shí)現(xiàn)如下:</p><p> if (cart.isExist(id)) {</p><p> messag
119、e = "該商品已經(jīng)存在!請(qǐng)</p><p> <a onclick='javascript:history.go(-1)'>返回</a>!";</p><p> request.setAttribute("message", message);</p><p> return m
溫馨提示
- 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ù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 電子商務(wù)—當(dāng)當(dāng)網(wǎng)網(wǎng)頁(yè)制作【文獻(xiàn)綜述】
- 電子商務(wù)—當(dāng)當(dāng)網(wǎng)網(wǎng)頁(yè)制作【開(kāi)題報(bào)告】
- 當(dāng)當(dāng)網(wǎng)——單車上的電子商務(wù)
- 電子商務(wù)畢業(yè)論文電子商務(wù)戰(zhàn)略分析及選擇
- 電子商務(wù)背景下當(dāng)當(dāng)網(wǎng)轉(zhuǎn)型探究
- 電子商務(wù)網(wǎng)頁(yè)設(shè)計(jì)畢業(yè)論文
- 電子商務(wù)畢業(yè)論文電子商務(wù)環(huán)境下的關(guān)稅問(wèn)題研究
- 電子商務(wù)畢業(yè)論文電子商務(wù)與物流的關(guān)系及未來(lái)趨勢(shì)探析
- 畢業(yè)論文電子商務(wù)發(fā)展與誠(chéng)信建設(shè)討論
- 電子商務(wù)畢業(yè)論文--淺析電子商務(wù)
- 電子商務(wù)畢業(yè)論文消費(fèi)金融與電子商務(wù)
- 信息安全論文電子商務(wù)信息安全
- 電子商務(wù)畢業(yè)論文電子商務(wù)環(huán)境下?tīng)I(yíng)銷手段的方式及影響
- 畢業(yè)論文電子商務(wù)中誠(chéng)信問(wèn)題分析與對(duì)策
- 畢業(yè)論文電子商務(wù)中產(chǎn)品質(zhì)量
- 畢業(yè)論文電子商務(wù)對(duì)傳統(tǒng)會(huì)計(jì)的挑戰(zhàn)
- 畢業(yè)論文電子商務(wù)在農(nóng)業(yè)中的應(yīng)用
- 網(wǎng)頁(yè)制作與電子商務(wù)網(wǎng)站安全
- 電子商務(wù)畢業(yè)論文
- 電子商務(wù)畢業(yè)論文
評(píng)論
0/150
提交評(píng)論