

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 畢業(yè)設計論文</b></p><p> 基于J2EE架構的電子商務系統(tǒng)設計</p><p><b> 教學單位: </b></p><p><b> 專業(yè)名稱: </b></p><p><b> 學 號: </b&g
2、t;</p><p><b> 學生姓名: </b></p><p><b> 指導教師: </b></p><p><b> 指導單位: </b></p><p><b> 完成時間: </b></p><p> 基于J
3、2EE架構的電子商務系統(tǒng)設計</p><p> 【摘要】 IBM公司對未來世界有句預言----“要么電子商務,要么無商可務!”。隨著經(jīng)濟全球化的發(fā)展,網(wǎng)絡影響著人們生活的方方面面?,F(xiàn)如今,電子商務風暴越刮越烈,人們越來越傾向于網(wǎng)上購物,足不出戶就可以在網(wǎng)上買到各種各樣的商品。所以,如何建立適合公司的電子商務系統(tǒng)成則為了許多企業(yè)家的煩惱。出于此現(xiàn)狀,本文主要研究了如何建立一個網(wǎng)上購書系統(tǒng)。</p>
4、<p> 本人所設計制作的“珍書網(wǎng)”網(wǎng)上購書系統(tǒng),是建立在J2EE架構上的,并運用了Struts2框架,JQuery框架,Ajax技術等現(xiàn)如今熱門的技術。該系統(tǒng)主要擁有產(chǎn)品瀏覽,分類顯示,注冊登錄,購物車,下訂單五大模塊。各個模塊間相互依賴,并共同組成了一個較為完整的網(wǎng)上購書系統(tǒng)。</p><p> 【關鍵詞】 電子商務,J2EE, Struts2,網(wǎng)上購書</p><p&g
5、t; Design of E-Commerce System based on J2EE Architecture</p><p> 【Abstract】 IBM says when predicting the future world ---- “Either electronic commerce or no commercial
6、 affairs”. As the economic globalization is developing, the computer network is affecting every aspect of human life. Today, e-commerce storm based on computer network is becoming stronger and stronger. More and more peo
7、ple tend to do online shopping, and they can buy any kinds of commodities via the network without going out of their houses. Therefore, how to establish an e-commerce system su</p><p> 【Key Words】 E-comme
8、rce,J2EE,Struts2,Online book shopping</p><p><b> 目錄</b></p><p><b> 第1章 緒論1</b></p><p><b> 1.1項目背景1</b></p><p> 1.1.1電子商務的定義1&
9、lt;/p><p> 1.1.2創(chuàng)建電子商務網(wǎng)站的必要性2</p><p> 1.2 需求分析2</p><p> 1.2.1 項目概況2</p><p> 第2章 技術背景4</p><p><b> 2.1框架簡介4</b></p><p> 2.2
10、J2EE 框架4</p><p> 2.3 Struts2框架5</p><p> 2.4 OGNL表達式6</p><p> 2.5 JQuery 框架7</p><p> 2.6 AJAX技術7</p><p> 第3章 系統(tǒng)設計9</p><p><b>
11、 3.1系統(tǒng)設計9</b></p><p> 3.1.1系統(tǒng)架構9</p><p> 3.1.2 代碼文件詳情9</p><p> 3.2數(shù)據(jù)庫設計11</p><p> 3.2.1數(shù)據(jù)庫簡介11</p><p> 3.2.2概念模型設計(E-R圖)12</p><
12、p> 第4章 系統(tǒng)實現(xiàn)14</p><p> 4.1模塊實現(xiàn)14</p><p> 4.1.1產(chǎn)品瀏覽模塊15</p><p> 4.1.2注冊登陸模塊17</p><p> 4.1.3分類顯示模塊22</p><p> 4.1.4購物車模塊23</p><p>
13、 4.1.5訂單模塊26</p><p><b> 結論30</b></p><p><b> 參考文獻31</b></p><p><b> 致謝33</b></p><p><b> 圖目錄</b></p><p&g
14、t; 圖2.1 J2EE框架架構圖5</p><p> 圖2.2 Struts2框架6</p><p> 圖2.3 Struts2流程圖7</p><p> 圖3.1 系統(tǒng)架構圖10</p><p> 圖3.2 代碼文件12</p><p> 圖3.3數(shù)據(jù)庫ER圖13</p>&l
15、t;p> 圖4.1模塊實現(xiàn)圖15</p><p> 圖4.2產(chǎn)品瀏覽頁面16</p><p> 圖4.3產(chǎn)品瀏覽模塊16</p><p> 圖4.4登陸頁面18</p><p> 圖4.5注冊登陸模塊18</p><p> 圖4.6注冊與注冊驗證頁面20</p><p&
16、gt; 圖4.7郵箱驗證頁面22</p><p> 圖4.8分類顯示頁面23</p><p> 圖4.9分類顯示模塊23</p><p> 圖4.10購物車頁面24</p><p> 圖4.11購物車模塊25</p><p> 圖4.12訂單頁面27</p><p>
17、圖4.13訂單模塊27</p><p> 圖4.13地址管理頁面28</p><p><b> 表目錄</b></p><p> 表3.1表現(xiàn)層文件及功能10</p><p> 表3.2控制層文件及功能11</p><p> 表3.3業(yè)務層文件及功能11</p>
18、<p> 表3.4持久層文件及功能11</p><p> 表3.5其他文件及功能11</p><p> 表3.6數(shù)據(jù)庫表功能13</p><p><b> 第1章 緒論</b></p><p><b> 1.1項目背景</b></p><p> 根
19、據(jù)中國互聯(lián)網(wǎng)絡信息中心(CNNIC)2009年發(fā)布的《中國網(wǎng)絡購物市場研究報告》,截至2009年6月,我國網(wǎng)購用戶規(guī)模已達8788萬,同比增加2459萬,年增長率為38.9%。值得注意的是,用戶對C2C(Customer to Customer,消費者之間的電子商務)購物網(wǎng)站。相對而言,B2C購物網(wǎng)站在產(chǎn)品品質和服務質量上都領先于C2C購物網(wǎng)站。因此,擁有自己的B2C網(wǎng)站是每個企業(yè)在當今信息時代實現(xiàn)飛躍的一個轉折點。</p>
20、<p> 報告中還指出,2009年上半年有85.7%的網(wǎng)民在網(wǎng)上查詢過商品信息,但是只有26%的網(wǎng)民實現(xiàn)了網(wǎng)絡購物。這表明,我國存在著龐大的潛在網(wǎng)購用戶群體,只是進行必要的引導和培養(yǎng),這部分用戶將為網(wǎng)購市場帶來廣闊的前景。IBM公司對未來世界有句預言----“要么電子商務,要么無商可務!”。雖然這有些夸大其詞,但從CNNIC報告發(fā)布的數(shù)據(jù)中,我們可以清晰的意思到電子商務時代正向我們走來。</p><p
21、> 1.1.1電子商務的定義</p><p> 電子商務網(wǎng)站是利用軟、硬件基礎設施,通過Internet相互連接起來的,為用戶提供網(wǎng)頁服務(Web Server)、數(shù)據(jù)傳輸服務(FTP Server)、數(shù)據(jù)庫服務(Database Server)和郵件服務(Mail Server)等多種服務的信息載體。電子商務網(wǎng)站由服務器、工作站和各種網(wǎng)站設備作為技術支撐,通常以虛擬主機方式或主機托管方式存放和運行,網(wǎng)
22、站一般擁有固定的域名。</p><p> 電子商務離不開Internet,因此,在電子商務系統(tǒng)中,商務網(wǎng)站就是最基礎的設施。目前,在Internet上建立商務網(wǎng)站是電子商務主要的實現(xiàn)形式。</p><p> 商務網(wǎng)站是從事電子商務活動的基礎平臺,是企業(yè)樹立形象、展示產(chǎn)品或服務的窗口,是實現(xiàn)現(xiàn)代化辦公的標志,是商務活動中交易雙方信息交匯與傳遞的重要渠道,也是企業(yè)與用戶進行交互的界面。利用
23、Internet、Web網(wǎng)站和手機網(wǎng)絡等現(xiàn)代信息工具實現(xiàn)相關業(yè)務是電子商務企業(yè)的基本特征。</p><p> 1.1.2創(chuàng)建電子商務網(wǎng)站的必要性</p><p> (1) 用戶數(shù)量龐大,蘊涵無數(shù)商機</p><p> 全世界現(xiàn)在有數(shù)以億計的用戶接入互聯(lián)網(wǎng)。據(jù)專家統(tǒng)計,到2010年底電子商務規(guī)??蛇_5700億,比2009年增長一倍。另一個快速增長的電子商務網(wǎng)站發(fā)
24、布平臺----手機網(wǎng)絡的發(fā)展也很快。截至2009年6月底,中國手機上網(wǎng)用戶已達到1.554億。</p><p> (2) 提供商業(yè)信息,及時更新變化</p><p> 利用網(wǎng)絡來建立黃頁廣告,能夠更加及時地提供企業(yè)的商業(yè)信息,并隨時提供最新的商業(yè)資訊。</p><p> (3) 加強與客戶的聯(lián)系,提供優(yōu)質的服務</p><p> 通過
25、構建商務網(wǎng)站,企業(yè)可以在網(wǎng)頁上每天24小時向成千上萬的人提供聯(lián)系與溝通的渠道,任何人在任何時間都可以利用這個渠道。當今的商務過程更注重為客戶提供優(yōu)質的服務,在網(wǎng)站上可以采用更多、更便捷的途徑為客戶提供各種服務。</p><p> (4) 加快新產(chǎn)品的發(fā)布周期,及時反饋用戶信息</p><p> 利用網(wǎng)絡,新產(chǎn)品和新服務可以迅速發(fā)布到全球范圍,其成本低廉。通過增加一個新項目來更新網(wǎng)頁所花
26、費的費用只是印刷一本新產(chǎn)品目錄的零頭。</p><p><b> 1.2 需求分析</b></p><p> 1.2.1 項目概況</p><p> “珍書網(wǎng)”電子商務系統(tǒng)主要包含有五大模塊,分別是:產(chǎn)品瀏覽,注冊登陸,分類顯示,購物車和訂單模塊。</p><p> 本系統(tǒng)的頁面顯示是基于頁面框架的,主要使用CS
27、S+DIV的布局方式。它的作用是把一個完整的頁面分割成幾個不同的區(qū)域。這樣做的好處是,某些所有頁面都有的共同的部分可以只寫一次,減少代碼量,加快開發(fā)速度。并且使用框架可以非常方便的完成網(wǎng)頁導航工作,不但可以讓網(wǎng)站的結構更加清晰,而且可以讓各大搜索引擎更容易搜索到網(wǎng)站。其次,各個框架之間決不會存在相互干擾問題。利用框架最大的特點就是使網(wǎng)站的風格一致,把一個網(wǎng)站中頁面相同的部分單獨制作成一個頁面,作為框架結構的一個子框架的內容給整個網(wǎng)站公用
28、。</p><p> 頁面與后臺的數(shù)據(jù)交換是通過OGNL表達式和EL表達式來綁定交換的。這樣一來,可以簡化數(shù)據(jù)交換的代碼,比起傳統(tǒng)的servlet中使用的Request,Response,Session等數(shù)據(jù)載體來進行數(shù)據(jù)交換,它無疑方便很多。</p><p> 系統(tǒng)的請求,跳轉是由Struts2框架來控制的。使用Struts2框架來控制請求的跳轉,只需在對應的Struts2.xml文
29、件中配置完成就行了。與傳統(tǒng)的servlet相比,它可以大大減少開發(fā)人員編寫的代碼量。如使用傳統(tǒng)的servlet,首先必須獲取當前完整的URL,并對其進行切割,找出請求語句,然后使用大量的if-else語句來判斷請求,才能找到相應的方法。并且返回數(shù)據(jù)必須使用Response,Session,ApplicationContext等交互給頁面來顯示。</p><p><b> 第2章 技術背景</b&
30、gt;</p><p><b> 2.1框架簡介</b></p><p> 框架(Framework)是指整個或者部分系統(tǒng)的可重用設計,它表現(xiàn)為一組抽象構件以及構件實例之間的交互的方法;另一種定義認為,它是被應用開發(fā)者自由定的應用系統(tǒng)的骨架。前者是從應用方面陳述而后者是從目的方面給出了定義??梢哉f,框架就是個可重用的設計構件,它制定了程序的體系架構,闡明了整個系統(tǒng)
31、的設計、協(xié)作構件之間的相互依賴關系、責任分配和控制流程的規(guī)則,表現(xiàn)出抽象類與其實例間的依賴方法,它為構件重用提供了連接關系。</p><p> 應用框架的概念很簡單。它并不是應用程序中包含構件的程序片段,而是實現(xiàn)了應用系統(tǒng)開發(fā)中普遍使用的功能的底層服務。使用應用框架的開發(fā)人員可以在一個常用功能已實現(xiàn)的平臺上來開始具體系統(tǒng)的開發(fā)。它強調的是軟件設計重用性和系統(tǒng)功能的可擴展性,以縮短大型應用系統(tǒng)軟件的開發(fā)周期,提升
32、開發(fā)質量。與傳統(tǒng)的面向對象開發(fā)相比較,應用框架更加注重于專業(yè)領域的模塊重用。應用框架具有專業(yè)領域相關性,組件根據(jù)框架進行復合生成可運行的系統(tǒng)??蚣艿牧6仍酱?,其中包含的領域知識就更加完整。</p><p> 2.2 J2EE 框架</p><p> J2EE的全稱是Java2平臺企業(yè)版(Java 2 Platform,Enterprise Edition)。</p>&l
33、t;p> 它是一套和傳統(tǒng)應用開發(fā)完全不同的新的技術架構,其中包含了許多組件,主要功能是可簡化并且規(guī)范了應用系統(tǒng)的開發(fā)與部署,進而提高了系統(tǒng)的可移植性、安全與再用價值。</p><p> 如今,Java 2平臺擁有3個版本,它們分別是適用于小型設備和智能卡上的Java 2平臺Micro版本(Java 2 Platform Micro Edition,J2ME)、適用于桌面操作系統(tǒng)的Java 2平臺標準版(
34、Java 2 Platform Standard Edition,J2SE)、適用于服務器應用程序的創(chuàng)建和服務的Java 2平臺企業(yè)版(Java 2 Platform Enterprise Edition,J2EE)。</p><p> 圖2.1 J2EE框架架構圖</p><p> 2.3 Struts2框架</p><p> Struts 2以WebWor
35、k優(yōu)秀的設計思想為核心,吸收了Struts 1的部分優(yōu)點,建立了一個兼容WebWork和Struts 1的MVC框架,Struts 2的目標是希望可以讓原來使用Struts 1、WebWork的開發(fā)人員,都可以平穩(wěn)過渡到使用Struts 2框架。</p><p> 圖2.2 Struts2框架</p><p> Struts 2框架的大致處理流程如下:</p><p
36、> (1)瀏覽器發(fā)送請求,例如請求/mypage.action等。</p><p> (2)核心控制器FilterDispatcher根據(jù)請求決定調用合適的Action。</p><p> (3)WebWork的攔截器鏈自動對請求應用通用功能,例如workflow、validation或文件上傳等功能。</p><p> (4)回調Action的exe
37、cute方法,該execute方法先獲取用戶請求參數(shù),然后執(zhí)行某種數(shù)據(jù)庫操作,既可以是將數(shù)據(jù)保存到數(shù)據(jù)庫,也可以從數(shù)據(jù)庫中檢索信息。實際上,因為Action只是一個控制器,它會調用業(yè)務邏輯組件來處理用戶的請求。</p><p> (5)Action的execute方法處理結果信息將被輸出到瀏覽器中,可以是HTML頁面、圖像,也可以是PDF文檔或者其他文檔。此時支持的視圖技術非常多,既支持JSP,也支持Veloc
38、ity、FreeMarker等模板技術。</p><p> 圖2.3 Struts2流程圖</p><p> 2.4 OGNL表達式</p><p> ognl – Object-Graph Navigation Language(對象圖導航語言), OGNL可以讓我們用非常簡單的表達式訪問對象層, Struts2中使用OGNL來做界面數(shù)據(jù)綁定,即把界面元素(
39、例如一個textfield)和對象層某個類的某個屬性綁定在一起,修改和顯示自動同步。根對象ValueStack的實現(xiàn)類為OgnlValueStack配合struts標簽使用,例如:</p><p> <s:property value="name"/></p><p> <s:property value="user.username&
40、quot;/></p><p> <s:property value=“username.length()"/></p><p> <s:property value="users[1]"/></p><p> 2.5 JQuery 框架</p><p> jQuery由美國
41、人John Resig創(chuàng)建,至今已吸引了來自世界各地的眾多javascript高手加入其team,包括來自德國的Jörn Zaefferer,羅馬尼亞的Stefan Petre等等。jQuery是繼prototype之后又一個優(yōu)秀的Javascript框架。其宗旨是——WRITE LESS,DO MORE,寫更少的代碼,做更多的事情。它是輕量級的js庫(壓縮后只有21k) ,這是其它的js庫所不及的,它兼容CSS3,還
42、兼容各種瀏覽器 (IE 6.0+, FF 1.5+, Safari 2.0+, Opera 9.0+)。jQuery是一個快速的,簡潔的javaScript庫,使用戶能更方便地處理HTML documents、events、實現(xiàn)動畫效果,并且方便地為網(wǎng)站提供AJAX交互。jQuery還有一個比較大的優(yōu)勢是,它的文檔說明很全,而且各種應用也說得很詳細,同時還有許多成熟的插件可供選擇。jQuery能夠使用戶的html頁保持代碼和html內容
43、分離,也就是說,不用再在html里面插入一堆js來調用命令了,只需定義id即可。</p><p> 2.6 AJAX技術</p><p> Ajax的全稱是:AsynchronousJavaScript+XML,Ajax不是一個技術,它實際上是幾種技術,每種技術都有其獨特這處,合在一起就成了一個功能強大的新技術。Ajax包括:XHTML和CSS 使用文檔對象(Document
44、ObjectModel)作動態(tài)顯示和交互 使用XML和XSLT做數(shù)據(jù)交互和操作使XMLHttpRequest進行異步數(shù)據(jù)接收使用JavaScript將它們綁定在一起。</p><p> Ajax(AsynchronousJavaScriptandXML)是結合了Java技術、XML以及JavaS-</p><p> cript等編程技術,可以讓開發(fā)人員構建基于Java技術的W
45、eb應用,并打破了使用頁面重載的慣例。 </p><p> Ajax是使用客戶端腳本與Web服務器交換數(shù)據(jù)的Web應用開發(fā)方法。這樣,Web頁面不用打斷交互流程進行重新加裁,就可以動態(tài)地更新。使用Ajax,用戶可以創(chuàng)建接近本地桌面應用的直接、高可用、更豐富、更動態(tài)的Web用戶界面。 </p><p> 異步JavaScript和XML(AJAX)不是什么新技術,而是
46、指這樣一種方法:使用幾種現(xiàn)有技術——包括級聯(lián)樣式表(CSS)、JavaScript、XHTML、XML和可擴展樣式語言轉換(XSLT),開發(fā)外觀及操作類似桌面軟件的Web應用軟件。實現(xiàn)Ajax的所有組件都已存在了許多年。AdaptivePath的用戶體驗戰(zhàn)略部門主管兼創(chuàng)辦合伙人JesseJamesGarrett今年2月發(fā)表在AdaptivePath網(wǎng)站上的一篇文章中杜撰了這個術語。</p><p> 異步這個詞
47、是指AJAX應用軟件與主機服務器進行聯(lián)系的方式。如果使用舊模式,每當用戶執(zhí)行某種操作、向服務器請求獲得新數(shù)據(jù),Web瀏覽器就會更新當前窗口。如果使用AJAX的異步模式,瀏覽器就不必等用戶請求操作,也不必更新整個窗口就可以顯示新獲取的數(shù)據(jù)。只要來回傳送采用XML格式的數(shù)據(jù),在瀏覽器里面運行的JavaScript代碼就可以與服務器進行聯(lián)系。JavaScript代碼還可以把樣式表加到檢索到的數(shù)據(jù)上,然后在現(xiàn)有網(wǎng)頁的某個部分加以顯示。</
48、p><p><b> 第3章 系統(tǒng)設計</b></p><p><b> 3.1系統(tǒng)設計</b></p><p><b> 3.1.1系統(tǒng)架構</b></p><p> 本電子商務網(wǎng)站采用四層架構:</p><p> (1) 表現(xiàn)層:JSP頁面 涉
49、及標簽,OGNL表達式,jQuery,Ajax</p><p> (2) 控制層:使用Struts2控制器,涉及struts.xml配置</p><p> (3) 業(yè)務層:Action組件</p><p> (4) 持久層:DAO組件</p><p> 圖3.1 系統(tǒng)架構圖</p><p> 3.1.2 代碼
50、文件詳情</p><p> 表3.1表現(xiàn)層文件及功能</p><p> 表3.2控制層文件及功能</p><p> 表3.3業(yè)務層文件及功能</p><p> 表3.4持久層文件及功能</p><p> 表3.5其他文件及功能</p><p><b> 圖3.2 代碼文件&
51、lt;/b></p><p><b> 3.2數(shù)據(jù)庫設計</b></p><p> 3.2.1數(shù)據(jù)庫簡介</p><p> (1) 數(shù)據(jù)庫是信息系統(tǒng)的核心和基礎,把信息系統(tǒng)中大量的數(shù)據(jù)按一定的模型組織起來,提供存儲、維護、檢索數(shù)據(jù)的功能,使信息系統(tǒng)可以方便、及時、準確地從數(shù)據(jù)庫中獲得所需的信息。</p><p&g
52、t; (2) 數(shù)據(jù)庫是信息系統(tǒng)的各個部分能否緊密地結合在一起以及如何結合的關鍵所在。</p><p> (3) 數(shù)據(jù)庫設計是信息系統(tǒng)開發(fā)和建設的重要組成部分。</p><p> 3.2.2概念模型設計(E-R圖)</p><p> 數(shù)據(jù)模型是是數(shù)據(jù)特征的抽象,從抽象層次上描述了系統(tǒng)的靜態(tài)特征、動態(tài)行為和約束條件,為數(shù)據(jù)庫系統(tǒng)的信息表與操作提供一個抽象的框架。
53、描述了數(shù)據(jù)結構、數(shù)據(jù)操作及數(shù)據(jù)約束。</p><p><b> 本系統(tǒng)的ER圖:</b></p><p> 圖3.3數(shù)據(jù)庫ER圖</p><p> 表3.6數(shù)據(jù)庫表功能</p><p><b> 第4章 系統(tǒng)實現(xiàn)</b></p><p><b> 4.1模
54、塊實現(xiàn)</b></p><p> “珍書網(wǎng)”電子商務系統(tǒng)包含有五大模塊,分別是:產(chǎn)品瀏覽,分類顯示,注冊登陸,購物車和訂單模塊。</p><p> (1) 產(chǎn)品瀏覽下包括最新上架,熱銷圖書,編輯推薦三個小模塊。</p><p> (2) 分類顯示下有一個分頁模塊</p><p> (3) 注冊登陸下有兩個模塊,分別是注冊和
55、登陸,注冊下又有一個注冊驗證模塊,注冊驗證下還有個郵箱驗證模塊。</p><p> (4) 購物車下?lián)碛性黾樱瑒h除,修改數(shù)量三個模塊</p><p> (5) 訂單模塊包括一個地址管理模塊</p><p><b> 圖4.1模塊實現(xiàn)圖</b></p><p> 4.1.1產(chǎn)品瀏覽模塊</p><
56、;p> 圖4.2產(chǎn)品瀏覽頁面</p><p> 圖4.3產(chǎn)品瀏覽模塊</p><p> <%@taglib prefix="s" uri="/struts-tags"%>//引入OGNL表達式</p><p> <%@include file="../common/head.jsp&q
57、uot;%>//加入共同的頭尾部頁面</p><p> <%@include file="../common/foot.jsp"%></p><p> (1) 左邊分類導航欄</p><p> private List<Category> cats; //傳到頁面的數(shù)據(jù)</p><p>
58、 public String execute(){</p><p> CategoryDAO catDao=new CategoryDAOImpl();</p><p><b> try {</b></p><p> List<Category> all=catDao.findAll();//查找出所有的類別,放入一個Lis
59、t里,然后傳到頁面</p><p> cats=findSubCatsByParentId(all,1);</p><p> for(Category c:cats){</p><p> c.setSubCats(findSubCatsByParentId(all,c.getId()));// 通過過濾獲取一級級別</p><p>&l
60、t;b> }</b></p><p> return "success";</p><p> } catch (SQLException e) {</p><p> e.printStackTrace();</p><p> return"error";</p>
61、<p><b> }</b></p><p><b> }</b></p><p> <s:iterator value="cats" var="subcats">//使用OGNL表達式迭代cats,循環(huán)顯示出各個類別</p><p> </s:
62、iterator></p><p> (2) 最新上架圖書(根據(jù)上架時間,取前8個商品)</p><p> select * from d_product where has_deleted=0 order by add_time desc limit 0,8</p><p><b> (3) 熱銷圖書</b></p>
63、<p> select * from d_product where has_deleted=0 limit 0,1</p><p> (4) 編輯推薦(三表聯(lián)合查詢,根據(jù)入庫時間由近到遠,查出產(chǎn)品信息)</p><p> "select dp.*,db.* from d_category_product dcp join d_product dp on(dcp
64、.product_id=dp.id) join d_book db on(dp.id=db.id) where dcp.cat_id=? order by dp.add_time desc limit ?,?"</p><p> 4.1.2注冊登陸模塊</p><p><b> 圖4.4登陸頁面</b></p><p> 圖4.
65、5注冊登陸模塊</p><p><b> (1) 登陸</b></p><p> //Struts2控制登陸命令,根據(jù)不同的返回值,跳至不同的action</p><p> <action name="login" class="com.tarena.dang.action.user.LoginActi
66、on"></p><p> <result name="verify">verify_form.jsp</result></p><p> <result name="login">login_form.jsp</result></p><p> <r
67、esult name="main">/main/main.jsp</result></p><p> <result name="order" type="redirectAction">../cart/cartlist</result></p><p> <result nam
68、e="notfound">login_form.jsp</result></p><p> <result name="input">/user/login_form.jsp</result></p><p><b> </action></b></p>&
69、lt;p><b> //登陸查詢</b></p><p> UserDAO dao=new UserDAOImpl();</p><p><b> try {</b></p><p> user=dao.findByEmail(email); //根據(jù)Email找到用戶</p>&l
70、t;p> if(user==null){</p><p> return "error";//如果用戶為空,返回error</p><p><b> }</b></p><p> if(!user.isEmailVerify())</p><p> return "verif
71、y";//如果用戶未驗證郵箱,跳至郵箱驗證</p><p> }else if(!user.getPassword().equals(password)){</p><p> return "login";//如果成功找到用戶,但密碼不匹配,跳登錄界面</p><p><b> }else{</b></
72、p><p> user.setLastLoginTime(System.currentTimeMillis());//設置最后登陸時間</p><p> String ip=ServletActionContext.getRequest().getRemoteAddr();//獲得當前登陸IP</p><p> user.setLastLoginIp(ip); /
73、/設置當前IP</p><p> ActionContext.getContext().getSession().put("user", user);</p><p> user.setLastLoginIp(ActionContext)</p><p> dao.update(user);</p><p> r
74、eturn "main";//如果成功找到用戶,且密碼匹配,跳產(chǎn)品瀏覽界面</p><p><b> }</b></p><p> } catch (Exception e) {</p><p> e.printStackTrace();</p><p> return "error
75、";</p><p><b> }</b></p><p> 圖4.6注冊與注冊驗證頁面</p><p><b> (2) 注冊</b></p><p> private User user;//拿到頁面?zhèn)鱽淼膗ser</p><p> public St
76、ring execute(){</p><p> UserDAO userDao=new UserDAOImpl();</p><p><b> try {</b></p><p> user.setUserIntegral(0);//設置積分</p><p> user.setLastLoginTime(Sys
77、tem.currentTimeMillis());//設置最后登陸時間</p><p> String ip=ServletActionContext.getRequest().getRemoteAddr();//獲得當前登陸IP</p><p> user.setLastLoginIp(ip);//設置當前IP</p><p> user.setEma
78、ilVerify(false);//設置郵箱是否驗證</p><p> String verifyCode=VerifyUtil.createVerifyCode();//生成郵箱驗證碼</p><p> user.setEmailVerifyCode(verifyCode);//設置郵箱驗證碼</p><p> userDao.save(user);//將u
79、ser存入d_user表中</p><p> return "success";</p><p> } catch (Exception e) {</p><p> e.printStackTrace();</p><p> return "error";</p><p>
80、;<b> }</b></p><p><b> }</b></p><p><b> (3) 注冊驗證</b></p><p> //發(fā)送Ajax請求驗證注冊郵箱</p><p> $(function() {</p><p> $(
81、9;#txtEmail').blur(function() {//通過ID獲取到元素,添加鼠標焦點失去事件</p><p> $('#email\\.info').html('');</p><p> var txt = $('#txtEmail').val();</p><p> //判斷郵箱地址的可用
82、性</p><p> if (!txt) {</p><p> $('#email\\.info').html('<img src="../images/wrong.gif"/>郵箱地址不能為空');</p><p> emailflag = false;</p><p>
83、<b> } else {</b></p><p> //利用正則表達式判斷郵箱是否符合格式</p><p> var pattern = /\b(^['_A-Za-z0-9-]+(\.['_A-Za-z0-9-]+)*@([A-Za-z0-9-])+(\.[A-Za-z0-9-]+)*((\.[A-Za-z0-9]{2,})|(\.[A-Za-
84、z0-9]{2,}\.[A-Za-z0-9]{2,}))$)\b/;</p><p> if (!pattern.test(txt)) {</p><p> emailflag = false;</p><p> $('#email\\.info').html('<img src="../images/wrong.gif
85、"/>郵箱地址不符合規(guī)則');</p><p><b> } else {</b></p><p> $.post("user/validEmail.action",</p><p> {"email" : txt},</p><p> functi
86、on(data) {</p><p> if (data) {</p><p> $('#email\\.info').html('<img src="../images/right.gif"/><span style="color:blue">郵箱地址可以使用</span>')
87、;</p><p> //$('#emailflag').val(true);</p><p> emailflag = true;</p><p><b> } else {</b></p><p> emailflag = false;</p><p> //判斷郵箱
88、是否已經(jīng)被注冊了</p><p> $('#email\\.info').html('<img src="../images/wrong.gif"/>郵箱地址被占用');</p><p><b> }</b></p><p><b> });</b>&l
89、t;/p><p><b> }</b></p><p><b> }</b></p><p><b> });</b></p><p><b> (4) 驗證郵箱</b></p><p> 圖4.7郵箱驗證頁面</p&g
90、t;<p> UserDAO dao=new UserDAOImpl();</p><p><b> try {</b></p><p> System.out.println("verifyemail:"+email); //在控制臺打印郵箱驗證碼</p><p> User user=dao.
91、findByEmail(email);</p><p> if(user.getEmailVerifyCode().equals(verify)){ //判斷用戶輸入的驗證碼和發(fā)的是否一致</p><p> user.setEmailVerify(true);</p><p> dao.update(user);</p><p> v
92、erifyok=true;</p><p><b> }</b></p><p> return "success";</p><p> } catch (Exception e) {</p><p> e.printStackTrace();</p><p> re
93、turn "error";</p><p><b> }</b></p><p><b> }</b></p><p> 4.1.3分類顯示模塊</p><p> 圖4.8分類顯示頁面</p><p> 圖4.9分類顯示模塊</p>
94、<p><b> (1) 分頁</b></p><p> CategoryDAO catDao=new CategoryDAOImpl();</p><p><b> try {</b></p><p> pCat=catDao.findCategoryById(pid);</p><
95、;p> cats=catDao.findByParentId(pid);</p><p> //統(tǒng)計給個類別一共包含多少種商品,totalNum</p><p> totalNum=catDao.numOfPid(pid);//類別一共包含多少種商品</p><p> BookDAO bookDao=new BookDAOImpl();</p&g
96、t;<p> int begin=(page-1)*size;</p><p> maxPage=catDao.numOfProductByCategoryId(id)/size+1; //計算出最大頁數(shù)</p><p> books=bookDao.findByCatId(id,begin,size); //根據(jù)所給的三個條件找出商品集</p><
97、p> return "success";</p><p> } catch (SQLException e) {</p><p> e.printStackTrace();</p><p> return "error";</p><p><b> }</b><
98、;/p><p> //分頁顯示查詢語句</p><p> "select dp.*,db.* from d_category_product dcp join d_product dp on(dcp.product_id=dp.id) join d_book db on(dp.id=db.id) where dcp.cat_id=? limit ?,?";</p&
99、gt;<p> 4.1.4購物車模塊</p><p> 圖4.10購物車頁面</p><p> 圖4.11購物車模塊</p><p><b> //創(chuàng)建購物車實例</b></p><p> public static CartImpl getInstance() {</p><
100、p> //從ActionContext中獲取session,再從session中獲取購物車實例,如果獲取不到,則新建實例,并放入session中</p><p> Map<String, Object> session = ActionContext.getContext().getSession();</p><p> CartImpl cart = (CartI
101、mpl) session.get("cart");</p><p> if (cart == null) {</p><p> cart = new CartImpl();</p><p><b> try {</b></p><p> cart.load(CookieUtil.findCoo
102、kie("cart", request));</p><p> } catch (UnsupportedEncodingException e) {</p><p> e.printStackTrace();</p><p><b> }</b></p><p> session.put(&q
103、uot;cart", cart);</p><p><b> }</b></p><p> return cart;</p><p><b> }</b></p><p> (1) 購物車中增加商品方法</p><p> //遍歷購物車,如果發(fā)現(xiàn)要添加的商
104、品的ID和購物車中某件商品的ID相同,將返回,您以添加過商品</p><p> public boolean add(int id) {</p><p> for (CartItem item : items) {</p><p> if (item.getProduct().getId() == id) {</p><p> ret
105、urn false;</p><p><b> }</b></p><p><b> }</b></p><p> ProductDAO proDao = new ProductDAOImpl();</p><p> Product p = null;</p><p>
106、;<b> try {</b></p><p> p = proDao.findById(id);</p><p> } catch (SQLException e) {</p><p> e.printStackTrace();</p><p><b> }</b></p>
107、<p> CartItem item = new CartItem();</p><p> item.setProduct(p);</p><p> item.setQty(1);</p><p> items.add(item); //根據(jù)ID查找出商品,然后加入購物車中</p><p><b> try {
108、</b></p><p> CookieUtil.addCookie("cart", store(), response);</p><p> } catch (UnsupportedEncodingException e) {</p><p> e.printStackTrace();</p><p>
109、<b> }</b></p><p> return true;</p><p><b> }</b></p><p> (2) 刪除,遍歷購物車,將商品ID和刪除的ID相同的商品的Buy字段set為false</p><p> CookieUtil.addCookie("car
110、t", store(), response);</p><p> } catch (UnsupportedEncodingException e) {</p><p> e.printStackTrace();</p><p><b> }</b></p><p><b> }</b&g
111、t;</p><p> (3) 修改數(shù)量,遍歷購物車,將商品的qty屬性改成頁面?zhèn)鱽淼囊牡纳唐窋?shù)量</p><p> public void modify(int id, int qty) {</p><p> for (CartItem c : items) { </p><p> if (c.getProduct().getI
112、d() == id) {</p><p> c.setQty(qty);</p><p><b> }</b></p><p><b> }</b></p><p><b> try {</b></p><p> CookieUtil.addC
113、ookie("cart", store(), response);</p><p> } catch (UnsupportedEncodingException e) {</p><p> e.printStackTrace();</p><p><b> }</b></p><p><b
114、> }</b></p><p><b> 4.1.5訂單模塊</b></p><p><b> 圖4.12訂單頁面</b></p><p><b> 圖4.13訂單模塊</b></p><p> public String execute(){<
115、;/p><p> Map<String, Object> session = ActionContext.getContext().getSession();//獲得Session</p><p> User user=(User) session.get("user");//獲得已存入Session里的用戶</p><p> if
116、(user==null){</p><p> return "login";</p><p><b> }</b></p><p> int id=user.getId();</p><p> AddressDAO aDao=new AddressDAOImpl();</p>&
117、lt;p><b> try {</b></p><p> adds=aDao.findAddressByUserId(id);//根據(jù)用戶ID找到用戶地址</p><p> return "success";</p><p> } catch (SQLException e) {</p><
118、p> e.printStackTrace();</p><p> return "error";</p><p><b> }</b></p><p><b> }</b></p><p> 圖4.13地址管理頁面</p><p><
119、b> //生成新地址</b></p><p> Map<String, Object> session = ActionContext.getContext().getSession();</p><p> User user=(User)session.get("user");</p><p> CartI
120、mpl cart = CartImpl.getInstance();//獲取購物車實例</p><p> OrderDAO oDao=new OrderDAOImpl();</p><p> if(user==null){</p><p> return "login";</p><p><b> }&l
121、t;/b></p><p> if(id==-1){</p><p> Order o=new Order(); </p><p> o.setUserId(user.getId());</p><p> o.setOrderTime(System.currentTimeMillis());</p><p&g
122、t; o.setTotalPrice(cart.sum());</p><p> o.setReceiveName(receiveName);</p><p> o.setFullAddress(fullAddress);</p><p> o.setPostalCode(postalCode);</p><p> o.setMob
123、ile(mobile);</p><p> o.setPhone(phone);</p><p><b> try {</b></p><p> oDao.insert(o);</p><p> } catch (SQLException e) {</p><p> e.print
124、StackTrace();</p><p><b> }</b></p><p> AddressDAO aDao=new AddressDAOImpl();</p><p><b> try {</b></p><p> address=aDao.findAddressById(id);
125、//自動填寫已有地址</p><p> return "success";</p><p> } catch (SQLException e) {</p><p> e.printStackTrace();</p><p> return "error";</p><p>
126、;<b> }</b></p><p><b> //顯示之前的地址</b></p><p> $(function(){</p><p> $('#address').change(function(){</p><p> $('#addressId').
127、val("-1");</p><p> $('#receiveName').val('');;</p><p> $('#fullAddress').val('');</p><p> $('#postalCode').val('');</
128、p><p> $('#phone').val('');</p><p> $('#mobile').val('');</p><p> var id=$('#address').val().trim();</p><p> if(id==-1){</p&
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于J2EE架構的電子商務系統(tǒng)的設計與實現(xiàn).pdf
- 基于J2EE的電子商務系統(tǒng).pdf
- 基于J2EE的保險電子商務系統(tǒng).pdf
- 基于J2EE架構的BTB電子商務在線采購系統(tǒng)的設計與實現(xiàn).pdf
- 基于J2EE的旅游電子商務系統(tǒng)設計與實現(xiàn).pdf
- 基于J2EE的電子商務應用系統(tǒng)研究.pdf
- 基于J2EE多層架構技術的電子商務研究與應用.pdf
- 基于j2ee架構的電子商務模式的研究設計與實現(xiàn)開題報告
- 畢業(yè)設計論文---基于j2ee架構的在線招聘系統(tǒng)
- 基于J2EE框架的電子商務系統(tǒng)的設計與實現(xiàn).pdf
- 基于j2ee的b2b電子商務系統(tǒng)【文獻綜述】
- 基于J2EE的服裝企業(yè)電子商務系統(tǒng)的設計與實現(xiàn).pdf
- 基于j2ee的家具產(chǎn)品電子商務管理系統(tǒng)的設計及實現(xiàn)
- 基于J2EE-XML的電子商務架構研究.pdf
- 基于J2EE的電子商務解決方案.pdf
- 基于J2EE電子商務平臺的構建——咸陽機床廠電子商務系統(tǒng).pdf
- 基于J2EE的電子商務庫存管理系統(tǒng)的設計與實現(xiàn).pdf
- 基于J2EE的移動Agent電子商務系統(tǒng)框架研究.pdf
- 基于J2EE的家具產(chǎn)品電子商務系統(tǒng)的設計與實現(xiàn).pdf
- 基于J2ME和J2EE的移動電子商務系統(tǒng)研究.pdf
評論
0/150
提交評論