電腦銷售管理系統(tǒng)設計與開發(fā)_第1頁
電腦銷售管理系統(tǒng)設計與開發(fā)_第2頁
電腦銷售管理系統(tǒng)設計與開發(fā)_第3頁
電腦銷售管理系統(tǒng)設計與開發(fā)_第4頁
電腦銷售管理系統(tǒng)設計與開發(fā)_第5頁
已閱讀5頁,還剩29頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、精選優(yōu)質文檔-傾情為你奉上信息工程學院本科畢業(yè)論文(2010屆)題 目電腦銷售管理系統(tǒng)設計與開發(fā)系計算機專 業(yè)計算機科學與技術(信息工程學院)班 級學 號學生姓名沈華清指導教師諶志群完成日期2010年6月專心-專注-專業(yè)摘 要在計算機飛速發(fā)展的今天,采用計算機來對產品進行管理已成為銷售市場科學化和現(xiàn)代化的重要標志,它給買家和賣家都帶來了明顯的經(jīng)濟效益和社會效益。電腦在每年的銷售量都保持在一個驚人的數(shù)量級上,可以說如今電腦已成為人們生活中的一部分。因此,開發(fā)一個電腦銷售管理系統(tǒng)是相當有必要的。本次畢業(yè)設計要實現(xiàn)的是一個電腦銷售管理系統(tǒng),該系統(tǒng)基本實現(xiàn)了以下的功能:注冊為該網(wǎng)站的用戶,在這個模塊中

2、主要使用了Struts的Validator驗證器來對用戶輸入的格式進行驗證,Ajax技術來確保賬號的唯一性;一般權限的用戶可以對在售電腦的信息進行瀏覽,瀏覽又可以分為機型分類,店主推薦機型,熱門機型,新機型和熱賣機型的瀏覽,這塊主要通過在Jsp頁面使用Div和Css來實現(xiàn);具有管理權限的用戶能對已注冊用戶的賬號有效性以及合法性進行審核,添加新型的電腦,刪除不銷售的電腦,對用戶生成的訂單進行瀏覽和發(fā)貨操作。本課題所要設計與實現(xiàn)的系統(tǒng)是用Java結合Mysql數(shù)據(jù)庫來實現(xiàn),其中主要運用Java中的MVC框架,用JavaBean來做Model,完成對數(shù)據(jù)的讀取,用Sevelet來作為Controle

3、r,來接受用戶的輸入并調用Model和Model去完成用戶的需求,用Jsp頁面來作為View完成與用戶之間信息的交互。關鍵詞:銷售系統(tǒng);Java;Jsp;Mysql數(shù)據(jù)庫ABSTRACTToday, with the rapid development of the computer, using computers to manage product has become an important scientific and modern symbol in sales market. It gives buyers and sellers have brought significant

4、 economic and social benefits. Computer sales are kept at an alarming magnitude each year, it can be said now the computer has become a part of life. Therefore, the development of a computerized sales management system is very necessary.The graduation project is to be achieved by a computer sales ma

5、nagement system,this system basically the following functions: Registration for the site's users, in this module, i use the validator of Struts Validator to format what the user input, and use Ajax technology to ensure the uniqueness of account; users who has general authority can browse the inf

6、ormation of the computer in the sale, this model can be divided into categories model, recommended model, hot model, new model and hot rank model.this function achieves primarily through the use of Div and Css in the Jsp page; users with administrative privileges can review the validity and legality

7、 on registered account, add new computers, delete computers which does not sell, and browse user-generated orders and send computers operations.The system is combined with Java and Mysql database, primarily using the MVC framework in Java. To use the JavaBean as Model, read the data from database, u

8、sing Sevelet as Controler, to accept user input and calls the Model and View to complete the needs of users, with Jsp page as View complete information between the user interaction.Key words:Sales system;Java;Jsp;Mysql database目 錄1 引言 電子商務給我們的日常生活帶去的好處是顯而易見的。首先,我們可以對現(xiàn)有的資源進行合理的利用。在經(jīng)濟全球化發(fā)展中,我們不能只故眼前的利

9、益而放棄了更好的發(fā)展道路。因為互聯(lián)網(wǎng)的普及和電子商務的日益完善,最先加入網(wǎng)絡貿易的商家將受益無窮。供需雙方可以通過Internet獲得豐富的供求信息,開拓廣闊渠道,捕捉商機、尋找客戶,提高工作效率。電子商務是一種方式、一種媒介、一種信息共享。它可以實現(xiàn)無紙化辦公,通過降低傳統(tǒng)企業(yè)在制作、傳送、管理和處理紙質文件的成本,不僅可以降低這些紙質文件的成本,更重要的是簡化流程、減少耽擱和錯誤,提高公司的靈活性、應變能力和提供更好的服務能力。它還可以實現(xiàn)即時生產、即時經(jīng)銷、即時服務和即時通信。其次,互聯(lián)網(wǎng)使我們對傳統(tǒng)的空間概念發(fā)生變化,出現(xiàn)了有別于實際地理空間的虛擬空間或者虛擬社會。處于世界任何角落的個

10、人、公司或機構,可以通過互聯(lián)網(wǎng)緊密地聯(lián)系在一起,建立虛擬社區(qū)、虛擬公司、虛擬政府、虛擬商場、虛擬大學或者虛擬研究所等,以達到信息共享、資源共享、智力共享等。然后,電子商務也任然保留了傳統(tǒng)商品交易中的互動性。通過互聯(lián)網(wǎng),商家之間可以直接交流、談判、簽合同,消費者也可以把自己的反饋建議反映到企業(yè)或商家的網(wǎng)站,而企業(yè)或者商家則會根據(jù)消費者的反饋及時調查產品種類及服務品質,做到良性互動. 借助于電子商務的如此多的優(yōu)勢之上,杭州的百腦匯在線電腦銷售系統(tǒng)取得了巨大的成功,它具有瀏覽電腦信息,在線交易,送貨上門等功能。它讓我們即使不用去電腦商城也能夠對各種品牌,各種型號的電腦信息有個比較直觀的了解。和傳統(tǒng)的

11、交易方式相比,百腦匯在線電腦銷售系統(tǒng)有很多優(yōu)越之處,如它可以突破地域和時間限制,使處于不同地區(qū)的人們自由地傳遞信息、互通有無、開展貿易,它的快捷、迅速、自由是傳統(tǒng)的電腦商城所無法比擬的。因此,電腦的在線銷售也必將在不久的將來成為主流,所以開發(fā)一個基于B/S結構的電腦銷售系統(tǒng)也是十分有意義的1。2 開發(fā)環(huán)境的介紹及安裝2.1 Java概述 Java是一個廣泛使用的網(wǎng)絡編程語言,它是一種新的計算概念。Java語言是一種面向對象的語言,它通過提供最基本的方法來完成指定的任務,只需理解一些基本的概念,就可以用它編寫出適合于各種情況的應用程序。Java略去了運算符重載、多重繼承等模糊的概念,并且通過實現(xiàn)

12、自動垃圾收集大大簡化了程序設計者的內存管理工作2。 Java語言的設計集中于對象及其接口,它提供了簡單的類機制以及動態(tài)的接口模型。對象中封裝了它的狀態(tài)變量以及相應的方法,實現(xiàn)了模塊化和信息隱藏;而類則提供了一類對象的原型,并且通過繼承機制,子類可以使用父類所提供的方法,實現(xiàn)了代碼的復用。用于網(wǎng)絡、分布環(huán)境下的Java必須要防止病毒的入侵。 Java不支持指針,一切對內存的訪問都必須通過對象的實例變量來實現(xiàn),這樣就防止程序員使用“特洛伊”木馬等欺騙手段訪問對象的私有成員,同時也避免了指針操作中容易產生的錯誤。與平臺無關的特性使 Java程序可以方便地被移植到網(wǎng)絡上的不同機器。 同時,Java的類

13、庫中也實現(xiàn)了與不同平臺的接口,使這些類庫可以移植。另外,Java編譯器是由Java語言實現(xiàn)的,Java運行時系統(tǒng)由標準C實現(xiàn),這使得Java 系統(tǒng)本身也具有可移植性。Java的設計使它適合于一個不斷發(fā)展的環(huán)境。在類庫中可以自由地加入新的方法和實例變量而不會影響用戶程序的執(zhí)行。并且 Java通過接口來支持多重繼承,使之比嚴格的類繼承具有更靈活的方式和擴展性。 2.2 Jsp的介紹 Jsp規(guī)范是Web服務器、應用服務器、交易系統(tǒng)、以及開發(fā)工具供應商間廣泛合作的結果。Sun公司開發(fā)出這個規(guī)范來整合和平衡已經(jīng)存在的對Java編程環(huán)境(例如,Java Servlet和JavaBeansTM)進行支持的技

14、術和工具。其結果是產生了一種新的、開發(fā)基于Web應用程序的方法,給予使用基于組件應用邏輯的頁面設計者以強大的功能3。 Jsp技術在多個方面加速了動態(tài)Web頁面的開發(fā):首先,使用Jsp技術,Web頁面開發(fā)人員可以使用HTML或者XML標識來設計和格式化最終頁面。使用 Jsp標識或者小腳本來生成頁面上的動態(tài)內容(內容是根據(jù)請求來變化的,例如請求帳戶信息或者特定的一瓶酒的價格)。生成內容的邏輯被封裝在標識和 JavaBeans組件中,并且捆綁在小腳本中,所有的腳本在服務器端運行。如果核心邏輯被封裝在標識和Beans中,那么其他人,如Web管理人員和頁面設計者,能夠編輯和使用Jsp頁面,而不影響內容的

15、生成。在服務器端,Jsp引擎解釋Jsp標識和小腳本,生成所請求的內容(例如,通過訪問JavaBeans組件,使用JDBCTM技術訪問數(shù)據(jù)庫,或者包含文件),并且將結果以HTML(或者XML)頁面的形式發(fā)送回瀏覽器。這有助于作者保護自己的代碼,而又保證任何基于HTML的Web瀏覽器的完全可用性。 其次,Web頁面開發(fā)人員不會都是熟悉腳本語言的編程人員。JavaServer Page技術封裝了許多功能,這些功能是在易用的、與Jsp相關的XML標識中進行動態(tài)內容生成所需要的。標準的JSP標識能夠訪問和實例化 JavaBeans組件,設置或者檢索組件屬性,下載Applet,以及執(zhí)行用其他方法更難于編碼

16、和耗時的功能。通過開發(fā)定制化標識庫,Jsp技術是可以擴展的。今后,第三方開發(fā)人員和其他人員可以為常用功能創(chuàng)建自己的標識庫。這使得Web頁面開發(fā)人員能夠使用熟悉的工具和如同標識一樣的執(zhí)行特定功能的構件來工作。Jsp技術很容易整合到多種應用體系結構中,以利用現(xiàn)存的工具和技巧,并且擴展到能夠支持企業(yè)級的分布式應用。作為采用Java技術家族的一部分,以及Java 2(企業(yè)版體系結構)的一個組成部分,Jsp技術能夠支持高度復雜的基于Web的應用。由于Jsp頁面的內置腳本語言是基于Java編程語言的,而且所有的Jsp頁面都被編譯成為Java Servlet,Jsp頁面就具有Java技術的所有好處,包括健壯

17、的存儲管理和安全性。作為Java平臺的一部分,Jsp擁有Java編程語言“一次編寫,各處運行”的特點。隨著越來越多的供應商將Jsp支持添加到他們的產品中,您可以使用自己所選擇的服務器和工具,更改工具或服務器并不影響當前的應用。當與Java 2平臺,企業(yè)版(J2EE)和Enterprise JavaBean技術整合時,Jsp頁面將提供企業(yè)級的擴展性和性能,這對于在虛擬企業(yè)中部署基于Web的應用是必需的。2.3 Myeclipse的安裝我是依照Myeclipse中文版本的安裝過程來講解和截屏的,如果你手里有的是Myeclipse的其它版本,也別擔心,因為無論是Myeclipse的哪個版本,安裝過程

18、幾乎都是一樣的,最多是在安裝功能選項中,有些版本功能多,有些版本功能少而已。由于沒有安裝光盤,我就下載了一個。雙擊下載的exe文件,即可進行解包,這步所花時間較長,你會看到圖2-1所示。圖2-1 安裝路徑界面選擇安裝Myeclipse 6.0的目錄,如圖2-2所示。圖2-2 安裝過程界面選擇開始菜單中的程序組,用如圖2-3所示的選擇即可。圖2-3 安裝過程界面開始安裝Myeclipse 6.0,如圖2-4所示。圖2-4 安裝過程界面確認安裝,至此,你已經(jīng)成功安裝好了Myeclipse 6.03 系統(tǒng)分析3.1 系統(tǒng)設計的背景信息是當代最流行的詞語之一。翻開書報充滿眼簾的是“信息時代”、“信息科

19、學”、“信息技術”、“信息產業(yè)”、“信息就是財富”等等?!靶畔⑹俏镔|的基本屬性之一,是物質間接存在性的自身顯示。信息的作用是消除不確定性。”4在經(jīng)濟日益全球化的今天,我們看到計算機網(wǎng)絡技術的迅猛發(fā)展,利用因特網(wǎng)實現(xiàn)商務活動的國際化、信息化和無紙化,已經(jīng)成為經(jīng)濟全球化發(fā)展的一大趨勢。電子商務正是為了適應這種以全球為市場的變化而發(fā)展起來的,并已在國際貿易和商業(yè)領域得到廣泛應用,而本課題正是對電子商務的具體化實際應用。3.2 系統(tǒng)需求分析本畢設課題是要設計與開發(fā)一個在線的電腦銷售管理系統(tǒng),該系統(tǒng)主要包括用戶賬號注冊,電腦信息的品牌分類、店主推薦機型、新上架機型、熱賣機型和熱賣機型榜的瀏覽,下訂單,管

20、理員對賬號、訂單、產品的上架與下架的管理等幾個部分。系統(tǒng)主要劃分為以下幾個模塊:1)用戶注冊模塊:創(chuàng)建用戶進入購買頁面的賬號。2)電腦信息瀏覽模塊:實現(xiàn)對不同品牌電腦的基本信息瀏覽。3)訂單模塊:收集用戶購買的電腦信息。4)管理員模塊:實現(xiàn)管理員的登錄以及對注冊用戶的賬號審核和刪除。5)電腦上架與下架:產品入庫與出庫的管理。6)訂單管理:送貨地址的審核以及進行發(fā)貨操作。3.3 系統(tǒng)開發(fā)的目標在軟件開發(fā)項目中,信息管理的影子隨處可見,但要真正使技術人員的積極性都發(fā)揮出來,并不是“影子”所能完成的。正所謂“知易行難”,信息管理并不僅僅是管理信息這么簡單。它有一套完備的目標體系;它需要科學的方法,需

21、要一種對時間進度、任務分解、績效控制的把握和判斷的過程。而該銷售系統(tǒng)開發(fā)的目標就是為了讓更多的人能夠在線了解最新的電腦資訊,使他們能夠更加便捷的購買電腦。軟件的開發(fā)本身就是一件很好的事情,能夠讓技術人員開發(fā)研究一個比較完善的系統(tǒng),能夠更好的讓客戶使用,讓更多的人方便使用,了解和知道系統(tǒng)軟件的可行性和可操作性。3.4 數(shù)據(jù)庫分析什么是數(shù)據(jù)庫呢?當人們從不同的角度來描述這一概念時就有不同的定義(當然是描述性的)。例如,稱數(shù)據(jù)庫是一個“記錄保存系統(tǒng)”(該定義強調了數(shù)據(jù)庫是若干記錄的集合)。又如稱數(shù)據(jù)庫是“人們?yōu)榻鉀Q特定的任務,以一定的組織方式存儲在一起的相關的數(shù)據(jù)的集合”(該定義側重于數(shù)據(jù)的組織)。

22、更有甚者稱數(shù)據(jù)庫是“一個數(shù)據(jù)倉庫”。當然,這種說法雖然形象,但并不嚴謹。嚴格地說,數(shù)據(jù)庫是“按照數(shù)據(jù)結構來組織、存儲和管理數(shù)據(jù)的倉庫” 5。在經(jīng)濟管理的日常工作中,常常需要把某些相關的數(shù)據(jù)放進這樣“倉庫”,并根據(jù)管理的需要進行相應的處理。例如,在本次畢業(yè)設計中的電腦信息表,在該表中保存了電腦的基本參數(shù)(電腦編號,屏幕尺寸,顯卡類型,產品定位,產品重量,Cpu類型,內存大小,硬盤大?。@張表就可以看成是一個數(shù)據(jù)庫。有了這個“數(shù)據(jù)倉庫”我們就可以根據(jù)需要隨時查詢某類型電腦的基本情況,也可以查詢在某個特定內存區(qū)間內的電腦類型等等。這些工作如果都能在計算機上自動進行,那我們的人事管理就可以達到極高的

23、水平。此外,在財務管理、倉庫管理、生產管理中也需要建立眾多的這種“數(shù)據(jù)庫”,使其可以利用計算機實現(xiàn)財務、倉庫、生產的自動化管理。4 系統(tǒng)設計4.1 總體設計在需求明確、準備開始編碼之前,要做總體設計,而詳細設計會在后一章節(jié)詳細說明與設計。因此,對于總體設計只要介紹系統(tǒng)軟件所需要實現(xiàn)的功能和操作,對后面的開發(fā)、測試、實施、維護工作起到關鍵性的影響6。在電腦銷售管理系統(tǒng)中,對特別而強的功能是不要求,只需簡單實現(xiàn)基本功能就可以了,因此以用戶注冊,電腦瀏覽,訂單生成,管理員管理等操作功能作為基本功能來開發(fā)總體設計??傮w設計的界面也是很簡單的,就主要以電腦瀏覽頁面做為主頁面,其他功能的頁面作為子頁面。通

24、過對該系統(tǒng)簡單分析,所需總體設計的方面有以下幾個:1)需要做好數(shù)據(jù)庫的準備,通過Mysql數(shù)據(jù)庫來完成數(shù)據(jù)的輸入工作,通過SQL語句來實現(xiàn)簡單的儲存過程;2)前臺的頁面設計盡量簡單化、可視化、可操作化、可擴充化;3)前臺頁面功能的設計通過在Myeclipse下編寫Jsp頁面來實現(xiàn);4)要求做到本系統(tǒng)的擴充性和可更新性,就是在對數(shù)據(jù)庫進行修改、添加、更新等操作。4.1.1 數(shù)據(jù)表結構的建立通過本系統(tǒng),需要建立的表有七張,分別為:d_d_user,d_d_computer,d_d_order,d_d_category,d_d_product,d_d_receive_address,d_d_orde

25、r_detail。d_d_user表中存儲用戶的基本信息,該表中的Email字段用來存儲登錄的賬號,Is_email_verify用來查看是否通過郵箱驗證,通過驗證的該字段為1,未通過的則為0,其結構如表4-1所示。表4-1 d_d_user表字段名類型意義Id整型(12)用戶編號Email文本(50)帳號名Nickname文本(50)昵稱Password文本(50)密碼Is_email_verify整型(1)是否通過郵箱驗證Email_verify_code文本(50)郵箱的驗證碼d_d_category表中存儲電腦的不同品牌信息,該表中的Turn字段用來存儲每個類別下子類別的個數(shù),Pare

26、nt_id中存儲的是父類的Id號,方便分類存取,其結構如表4-2所示。表4-2 d_d_category表字段名類型意義Id整型(12)類別編號Turn整型(3)子類序號En_name文本(50)英文名稱Cn_name文本(50)中文名稱Parent_id整型(12)所屬父類編號d_d_computer表中存儲電腦參數(shù)信息,其結構如表4-3所示。 表4-3 d_d_computer表字段名類型意義Id整型(12)電腦編號Screen_size文本(20)屏幕尺寸Graphics文本(50)顯卡類型Types文本(20)產品定位Weight文本(20)產品重量Cpu文本(20)Cpu類型Memo

27、ry 文本(20)內存大小Hard_size文本(20)硬盤大小d_d_product表中存儲電腦參數(shù)信息,該表中的Id為d_d_computer表的外鍵,并且兩表做了級聯(lián)操作,Category_id字段存儲的是該產品的類別號,需用時可以直接通過取該產品的Category_id來達到取該產品信息的目的,其結構如表4-4所示。 表4-4 d_d_product表字段名類型意義Id整型(12)電腦編號Category_id整型(12)類別號Product_name文本(100)產品名稱Add_time長整型(20)入庫時間Fixed_price雙進度浮點型市場價Dang_price雙進度浮點型會員

28、價Product_pic文本(200)電腦圖片d_d_order表中存儲訂單信息,該表中的User_id與Send_id是為了方便做表關聯(lián)查詢操作而設置的字段,他們分別表示在d_d_user表中的用戶Id和在d_d_receive_address表的Id,Status表示的是訂單的狀態(tài),為1時表示該訂單已發(fā)貨,為0時則表示還未發(fā)貨,由于在程序中調用的是系統(tǒng)的毫秒數(shù),所以在設計Order_time類型時采用的是長整形,其結構如表4-5所示。表4-5 d_d_order表字段名類型意義Id整型(10)訂單編號User_id整型(10)用戶編號Send_id整型(12)送貨地址號Status整型(1

29、0)訂單狀態(tài)Order_time長整型(20)下訂單日期Total_price雙進度浮點型訂單總價Send_time長整型(20)出貨日期d_d_order_detail表中存儲訂單詳細信息,表中的Order_id字段與表d_d_order中的Id相對應,方便對訂單詳細信息的了解,其結構如表4-6所示。 表4-6 d_d_order_detail表字段名類型意義Id整型(12)編號Order_id整型(12)訂單編號Product_name文本(50)貨物名稱Num整型(50)貨物數(shù)量d_d_receive_address表中存儲送貨信息,表中的User_id字段與表d_d_user中的Id相

30、對應,方便對用戶信息表的關聯(lián)操作,其結構如表4-7所示。 表4-7 d_d_receive_address表字段名類型意義Id整型(12)送貨編號User_id整型(10)用戶編號Receive_name文本(20)收貨人Full_address文本(200)送貨地址Postal_code文本(8)郵編Mobile文本(15)手機號Phone文本(20)固定電話4.1.2 數(shù)據(jù)庫中數(shù)據(jù)建立通過該系統(tǒng),需要建立的表數(shù)據(jù)有三張分別為:d_d_computer,d_d_category,d_d_product。d_d_category表所要建立如圖4-1數(shù)據(jù)所示。圖4-1 d_d_category表

31、中數(shù)據(jù)的顯示 d_d_computer表所要建立如圖4-2數(shù)據(jù)所示。 圖4-2 d_d_computer表中數(shù)據(jù)的顯示 d_d_product表所要建立如圖4-3數(shù)據(jù)所示。 圖4-3 d_d_product表中數(shù)據(jù)的顯示4.2 詳細設計最重要的部分是模塊的流程圖、狀態(tài)圖、局部變量及相應的文字說明等。在這個階段,各個模塊可以分給不同的人去并行設計,當然設計就本人一個人全部實現(xiàn)系統(tǒng)設計。在詳細設計階段,設計者的工作對象是一個模塊,根據(jù)總體設計賦予的局部任務,設計并表達出模塊的流程、狀態(tài)轉換等內容。該系統(tǒng)詳細設計的有幾個功能界面7。比如用戶注冊,電腦瀏覽,訂單生成,管理員管理,其中把電腦瀏覽頁面作為

32、主界面進行設計和功能實現(xiàn)。詳細設計主要是對總體設計進行詳細的開發(fā)和設計,其中設計包括前臺的界面設計和后臺數(shù)據(jù)庫的設計。后臺對數(shù)據(jù)庫的輸入,對其進行分析,然后在前臺進行控件的使用,代碼的編程。詳細設計主要包括界面的設計,操作功能的初步實現(xiàn)如(添加、刪除、修改等功能)。以及實現(xiàn)每一個操作功能。4.2.1 功能設計界面對于用戶的功能設計界面分為以下幾個基本功能。如圖4-4所示。 圖4-4 系統(tǒng)的功能圖用戶主界面就是一個電腦瀏覽的頁面,用電腦瀏覽作為主界面,其他頁面作為子頁面。通過用戶主界面的鏈接來跳轉其他界面。通過跳轉的代碼編程來實現(xiàn)主頁面跳轉到其他子頁面。5 系統(tǒng)實現(xiàn)5.1 用戶注冊模塊的實現(xiàn) 在

33、該模塊中,采用Jsp頁面來獲取用戶輸入的信息,該模塊頁面如圖5-1所示。圖5-1 注冊界面在這個模塊中,主要做的工作有輸入格式的驗證,帳號唯一性的驗證還有驗證碼類的編寫。對格式的驗證采用了Struts框架中的Validator框架。使用該框架必須先導入Jakarta-oro.Jar和 Commons-validator.Jar這兩個Jar包。Validator采用基于兩個Xml文件的方式來配置驗證規(guī)則,分別為Validation.xml,Validator-rules.xml。在Struts應用中,需放到Web-inf目錄下。在Validator-rules.Xml這個文件包含了一組驗證規(guī)則,

34、對所有Struts應用都適用。一般情況不用修改這個文件,除非要修改或擴展默認規(guī)則。如果要給應放到另一個Xml文件中,而不是直接添加到Validator-rules.xml文件中,這樣當Validator升級時,不用修改Validator-rules.xml文件8。Validator.xml這個文件是針對于具體Struts應用的,他可以為應用中的ActionForm配置驗證規(guī)則。而不用編碼實現(xiàn)驗證。其次是對帳號的唯一性進行驗證,避免同一帳號的重復注冊。該功能是通過Ajax來實現(xiàn)的。當用戶在Email地址欄中填完帳號,文本框失去焦點時,就會由Onblur去觸發(fā)checkEmail方法,以下即為ch

35、eckEmail方法的實現(xiàn)代碼。 var d = document.getElementById("email_exist");var email = document.getElementById("txtEmail");var xmlHttpRequest = null;if(typeof XMLHttpRequest) != 'undefined') xmlHttpRequest = new XMLHttpRequest();else xmlHttpRequest=new ActiveXObject('Microsoft.X

36、MLHttp');xmlHttpRequest.open('GET','ajaxEmailAction.do?email='+email.value, true);xmlHttpRequest.onreadystatechange=function() if(xmlHttpRequest.readyState=4) var txt = xmlHttpRequest.responseText;d.innerHTML = txt; ;xmlHttpRequest.send(null); 該方法會將獲得的帳號信息傳給ajaxEmailAction.java中,

37、在該類中系統(tǒng)將會把獲取的帳號去數(shù)據(jù)庫的d_d_user表中去遍歷,若找不到則返回“該帳號可用”信息,ajaxEmailAction.java中的處理代碼如下。String email_exist = ""String email = request.getParameter("email");SuperUserDao userDao = UserDaoFactory.getUserDao();List list =userDao.findByEmail(email);if("".equals(email)email_exist = &

38、quot;"else if(list.size()=0)email_exist = "恭喜你,該賬戶可用"elseemail_exist = "Sorry,該賬戶已被注冊"response.setContentType("text/plain;charset=utf-8");response.getWriter().write(email_exist);return null; 最后在該模塊中還寫了個ImageServletAction類來獲得驗證碼,在這里使用的是中文驗證碼,主要代碼如下。 response.setCont

39、entType("image/jpeg"); OutputStream ops = response.getOutputStream(); Random rd = new Random(); BufferedImage bi=new BufferedImage(250,75,BufferedImage.TYPE_INT_RGB); Graphics gp=bi.getGraphics();gp.setColor(new Color(rd.nextInt(255),rd.nextInt(255),rd.nextInt(255);gp.fillRect(0, 0, 300, 3

40、00);gp.setColor(new Color(rd.nextInt(255),rd.nextInt(255),rd.nextInt(255);String font = "好","愛","你","啊","哈","他","說","哦"String s = null;s = fontrd.nextInt(8)+fontrd.nextInt(8)+fontrd.nextInt(8)+fontrd.nextInt(8);gp.setFon

41、t(new Font("", Font.BOLD, 50);gp.drawString(s, 25, 55);JPEGImageEncoder jpeg=JPEGCodec.createJPEGEncoder(ops);jpeg.encode(bi);ops.flush();ops.close();request.getSession().setAttribute("verifycode", s);return null; 在這里只要改變數(shù)組font里的值就可以實現(xiàn)對效果的改變,如果String font = "A","B&

42、quot;,"C","D","E","F","G","H",調用s = fontrd.nextInt(8)+fontrd.nextInt(8)+fontrd.nextInt(8)+fontrd.nextInt(8)后顯示的就是這幾個大寫字母里的四個了。這個圖片型驗證碼主要由兩塊組成,背景圖片以及圖片上的字符串9。大概的制作過程是這樣的,首先通過new BufferedImage()在內存創(chuàng)建圖像區(qū),然后通過getGraphics()來獲得背景圖片,并通過setColor()和

43、fillRect()來設置圖片的顏色和位置。接著就是用數(shù)組font來存放所需的字符串,用setFont()和drawString()來設置字體和將字符串添加到背景圖片上去。這樣就完成了對圖片驗證碼的實現(xiàn)了。5.2 電腦瀏覽的實現(xiàn)該模塊由Category.jsp(分類頁面),Hot.jsp(熱銷電腦),New.jsp(新型電腦),New_bang.jsp(新機熱賣榜),Recommend.jsp(推薦機型)這5張jsp頁面通過Css組織在Main.jsp中來完成的10。下面重點介紹下Category.jsp的實現(xiàn)過程,其他頁面的實現(xiàn)基本與這兩者類似。Category.Jsp主要可分為三層,最上層

44、為電腦的品牌,下一層為末品牌下的系列名稱,在系列名稱下還有各個系列的不同型號的電腦,如圖5-2所示。圖5-2 分類瀏覽 要實現(xiàn)這個功能,首先必須調用DAO包下的CategoryDao.Java這個類中的findById(Integer id)這個方法,它返回的是一個Category對象,代碼如下:Session session = HibernateSessionFactory.openSession();try String hql = "from Category c where c.id=?"Query query = session.createQuery(hql)

45、;query.setParameter(0, id);List<?> list = query.list();if (list.size() > 0) return (Category) list.get(0); catch (HibernateException e) e.printStackTrace(); finally HibernateSessionFactory.closeSession();return null;然后在CategoryAction.java中調用這個方法獲得Category對象并將它封裝在Session中,代碼如下:Category categ

46、ory = categoryDao.findById(1);request.setAttribute("cat", category);return mapping.findForward("success");最后,在Jsp頁面中將Session中的值取出來顯示在頁面中,該部分的主要代碼如下:<c:forEach items="$cat.subCategorys" var="c2"><h3>$Name</h3><ul class="ul_left_list&qu

47、ot;> <c:forEach items="$c2.subCategorys" var="c3"> <li><a href="product.do?c2=$c2.id&c3=$c3.id">$Name</a></li> </c:forEach></ul></c:forEach> 以上代碼中通過嵌套的<c:forEach></c:forEach>來取對象Category中的值,外面的<c:forE

48、ach></c:forEach>取的是電腦品牌的值,而內部的取得則是不同品牌下的不同系列的值,并且為每個系列值都賦予了一個鏈接,點擊鏈接頁面將跳轉到該系列下的電腦列表中,頁面效果如圖5-3所示。圖5-3 電腦列表頁面在這系列下面的電腦列表的顯示頁面制作過程中比較耗時的是對列表的排序方式的編碼和記錄分頁的實現(xiàn)11。首先對排序方式的實現(xiàn)做一下分析,在這里主要做了對名稱和價格的升序和降序,主要實現(xiàn)代碼如下:public ProductDao()this.initHashMap();private void initHashMap()hql.put(ORDER_BY_DEFAULT,

49、 "from Product where category_id = ?");hql.put(ORDER_BY_NAME_ASC, "from Product where category_id = ? order by productName");hql.put(ORDER_BY_NAME_DESC, "from Product where category_id = ? order by productName desc");hql.put(ORDER_BY_PRICE_DESC, "from Product where

50、 category_id = ? order by dangPrice desc");hql.put(ORDER_BY_PRICE_ASC, "from Product where category_id = ? order by dangPrice");public Map getOrderOptions()Map<Integer ,String> options = new TreeMap<Integer ,String>();options.put(ORDER_BY_DEFAULT, "product.order.defau

51、lt");options.put(ORDER_BY_NAME_ASC, ".asc");options.put(ORDER_BY_NAME_DESC, ".desc");options.put(ORDER_BY_PRICE_DESC, "product.order.price.desc");options.put(ORDER_BY_PRICE_ASC, "product.order.price.asc");return options

52、; 當調用類ProducntDao.java時,該類的構造函數(shù)便會被調用,從而調用了initHashMap()方法。因此,對應的排序值與其對應的Hql語句就被以鍵值對的形式綁定在HashMap中,而真正實現(xiàn)了排序的是findByCategoryId()這個方法,代碼如下:public List findByCategoryId(int categoryId, int rowsPerPage, int page,int order) Session session = HibernateSessionFactory.openSession();Transaction tr=session.beg

53、inTransaction();String maphql=hql.get(order); /獲得排序方式Query query = session.createQuery(maphql);query.setParameter(0, categoryId); /設置Hql中的category_id值,并執(zhí)行Hql語句query.setMaxResults(rowsPerPage); /設置每頁顯示的最大條數(shù) query.setFirstResult(page - 1) * rowsPerPage); /設置每頁的第一條記錄List list = query.list();return list

54、;返回的List被保存在一個名為ProductList的Session中,在頁面上同過EL表達式輸出從數(shù)據(jù)庫取來的相對應的數(shù)據(jù)。其次是分頁顯示的實現(xiàn),這個主要還是在取數(shù)據(jù)庫數(shù)據(jù)時候做的操作。下面是實現(xiàn)這一功能的代碼:ProductListForm f = (ProductListForm) form;Integer totalPages = productDao.getTotalPages(f.getC3(), ROWS_PER_PAGE);if(totalPages=0)f.setPage(0);List categoryList = categoryDao.findByParentId(f

55、.getC2();List productList = productDao.findByCategoryId(f.getC3(),ROWS_PER_PAGE, f.getPage(),f.getOrder();Map orderOptions = productDao.getOrderOptions();request.getSession().setAttribute("category_list", categoryList);request.getSession().setAttribute("product_list", productList

56、);request.getSession().setAttribute("total_pages", totalPages);request.getSession().setAttribute("order_option", orderOptions);這里先用ProductListForm把傳過來的parent_id和category_id封裝起來,再通過getTotalPages()方法,取得總的頁面數(shù)。在方法體內部還有對頁面頁數(shù)的一個判斷語句if (totalRows % rowsPerPages = 0),如果totalRows % rowsPe

57、rPages = 0整除則返回整除后的那個數(shù)字,如果不能整除就返回加1后的那個數(shù)字。getTotalPages()方法的代碼如下:public int getTotalPages(Integer categoryId, int rowsPerPages) Session session = HibernateSessionFactory.openSession();Query query = session.createQuery("select count(*) from Product where category_id =?");query.setParameter(0,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論