版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、本科生畢業(yè)論文(設(shè)計)基于 jsp 的網(wǎng)絡(luò)商店系統(tǒng)的設(shè)計與實現(xiàn)姓名學(xué)號專業(yè)指導(dǎo)教師2011 年 5 月 20 日摘要隨著國內(nèi) internet 使用人數(shù)的增加,利用internet 進行網(wǎng)絡(luò)購物并以銀行卡付款的消費方式已漸流行,市場份額也在快速增長,電子商務(wù)逐漸成為業(yè)界熱議的一個焦點話題,相關(guān)的電子商務(wù)網(wǎng)站也層出不窮,因此電子商務(wù)蘊含巨大商機,具有廣闊的發(fā)展前景。本論文首先分析了網(wǎng)絡(luò)商店的地位和現(xiàn)狀,然后介紹了開發(fā)此系統(tǒng)所用到的“模型-視圖-控制器”模式。此系統(tǒng)采用ssh(spring + struts2 + hibernate)框架進行搭建,使用 java 語言,oracle 數(shù)據(jù)庫和 to
2、mcat 服務(wù)器。主要實現(xiàn)后臺的會員管理,公告管理,留言管理,管理員服務(wù),商品管理,站點信息管理,積分管理和訂單管理等功能。本系統(tǒng)主要解決以下問題:1. 以管理員的身份實現(xiàn)對商品信息的管理,以及對購物網(wǎng)站的日常維護。2. 使用 log4j 技術(shù)對所有用戶的操作進行自動記錄,并把記錄文件保存入硬盤文件。3. 實現(xiàn)根據(jù)商品的多條屬性查詢,使結(jié)果更精確。 關(guān)鍵詞:mvc;ssh;log4j;網(wǎng)絡(luò)商店abstractwith the increase number of the internet using in domestic, the use of internet for online sho
3、pping and bank card payments gradually popular consumption, and market share is also growing rapidly, e-commerce has become a focus of the industrys hot topics, besides, the related e-commerce web sites are endless. so e-commerce of huge business opportunities and broad prospects for development.the
4、sis analyzes firstly the status and existent problems of online store and then introduces the “model-view-controller” mode used to build this site. the analysis and design of the entire network application platform including the system adopts the ssh technology. ssh is short for spring+struts2+hiber
5、nate. and this system uses java programming language and oracle database and tomcat server to run the core modules of members management, announced management, message management, administrator services, commodity management, site information management, integration management and order management i
6、n backend.the problems settled in this system are as follows:1. as an administrator to realize the product information management, and maintenance of shopping sites.2. log4j technology records and saves all users operations automatically into the hard disk file.3. to achieve search product informati
7、on with many product attributes, so that more precise.key words: mvc, ssh, log4j, online store目錄1 引言 .11.1 課題背景 .11.2 使用的開發(fā)測試平臺及相關(guān)技術(shù)分析 .11.2.1 mvc 模式.11.2.2 ssh 框架.21.2.3 log4j 日志處理.32 系統(tǒng)概要設(shè)計 .42.1 需求分析 .42.1.1 系統(tǒng)用戶需求 .42.1.2 系統(tǒng)功能需求.42.1.3 本系統(tǒng)的頂層用例圖 .52.2 原型法 .52.3 系統(tǒng)總體設(shè)計 .62.3.1 系統(tǒng)業(yè)務(wù)流程 .62.3.2 會員管理
8、功能模塊 .72.3.3 公告管理功能模塊 .72.3.4 留言管理功能模塊 .82.3.5 管理員服務(wù)功能模塊 .82.3.6 商品管理功能模塊 .92.3.7 站點信息管理功能模塊 .92.3.8 積分管理功能模塊 .102.3.9 訂單管理功能模塊 .102.4 數(shù)據(jù)庫分析與設(shè)計 .112.4.1 數(shù)據(jù)庫的定義 .122.4.2 表定義 .123 系統(tǒng)詳細設(shè)計 .153.1 主要功能模塊詳細設(shè)計 .153.1.1 會員查詢頁面.153.1.2 發(fā)布新公告及公告管理頁面 .153.1.3 商品留言頁面 .173.1.4 添加管理員、禁用管理員和修改密碼頁面 .183.1.5 商品添加、修改
9、和下架頁面 .203.1.6 logo 更改和服務(wù)條款管理頁面.223.1.7 積分規(guī)則查看、設(shè)置和兌換規(guī)則設(shè)置頁面 .233.1.8 訂單管理頁面 .254 系統(tǒng)實現(xiàn) .274.1 系統(tǒng)搭建及初始化配置 .274.1.1 搭建 struts2 開發(fā)環(huán)境 .274.1.2 搭建 hibernate 開發(fā)環(huán)境.284.2 創(chuàng)建包目錄結(jié)構(gòu) .284.2.1 共通包構(gòu)成 .284.2.2 業(yè)務(wù)包構(gòu)成 .284.2.3 持久化層包構(gòu)成 .294.3 struts 模塊的實現(xiàn).294.4 hibernate 模塊的實現(xiàn).304.4.1 編寫 pojo 類 .304.4.2 編寫并配置映射文件 .314.
10、4.3 編寫 session 工廠.314.5 log4j 日志處理.324.6 圖片處理 .335 系統(tǒng)測試 .355.1 測試工具 .355.2 測試用例 .356 結(jié)論 .37參考文獻 .38致 謝 .391 引言科技在發(fā)展,人們的生活觀念也在跟著逐漸變化,現(xiàn)在網(wǎng)上購物 因其諸多優(yōu)點慢慢的成為人們的主流購物方式,而大學(xué)生消費群在其中占很大比例,因此在接下來的幾年都是電子商務(wù)的蓬勃發(fā)展期。而開發(fā)網(wǎng)上購物平臺是對這一產(chǎn)業(yè)的技術(shù)支持。本文正是基于此利用成熟的mvc 模式開發(fā),使用 ssh 框架以及 log4j 處理日志等技術(shù)豐富完善網(wǎng)絡(luò)商店購物管理系統(tǒng)的安全性及擴展性能。從而使其在實際應(yīng)用中具
11、有良好的商業(yè)價值。1 1. .1 1 課課題題背背景景現(xiàn)今的中國,電子商務(wù)的發(fā)展勢頭很兇猛。據(jù) 2010 年 cnnic 最新的中國互聯(lián)網(wǎng)發(fā)展?fàn)顩r調(diào)查顯示,中國網(wǎng)民規(guī)模達到 4.2 億;網(wǎng)民每周上網(wǎng)時長繼續(xù)增加,人均周上網(wǎng)時長達到 19.8 個小時,并且大部分網(wǎng)絡(luò)應(yīng)用我國網(wǎng)民的互聯(lián)網(wǎng)應(yīng)用表現(xiàn)出商務(wù)化程度迅速提高,娛樂化傾向繼續(xù)保持溝通和信息工具價值加深的特點.2010 年上半年,大部分網(wǎng)絡(luò)應(yīng)用在網(wǎng)民中更加普及各類網(wǎng)絡(luò)應(yīng)用的用戶規(guī)模持續(xù)擴大。其中,商務(wù)類應(yīng)用表現(xiàn)尤其突出,網(wǎng)上支付,網(wǎng)絡(luò)購物和網(wǎng)上銀行半年用戶增長率均在 30%左右,遠遠超過其他類網(wǎng)絡(luò)應(yīng)用社交網(wǎng)站。因此開發(fā)這套系統(tǒng)應(yīng)該具有廣闊的市場
12、前景。1 1. .2 2 使使用用的的開開發(fā)發(fā)測測試試平平臺臺及及相相關(guān)關(guān)技技術(shù)術(shù)分分析析本系統(tǒng)均采用目前流行成熟的技術(shù)開發(fā),具體開發(fā)環(huán)境如下:表 1-1 開發(fā)環(huán)境操作系統(tǒng)windows 7開發(fā)語言java,jsp,css,html,xml開發(fā)工具eclipse,dreamweaver測試工具junit數(shù)據(jù)庫oracle 11g使用框架struct2,spring,hibernate服務(wù)器tomcat6.01 1. .2 2. .1 1 m mv vc c 模模式式mvc 結(jié)構(gòu)是model-view-controller的縮寫,中文翻譯為模型-視圖-控制器。mvc應(yīng)用程序總是由這三個部分組成。
13、模型(model)是封裝數(shù)據(jù)對象,用來封裝和顯示數(shù)據(jù)對象;視圖(view)是作為模型的顯示,它表示數(shù)據(jù)對象的當(dāng)前狀態(tài);控制器(controller)定義對用戶的輸入執(zhí)行相應(yīng)操作的接口,它用來操作模型和數(shù)據(jù)對象。使用 mvc 模式可以提高系統(tǒng)的可靠性,適應(yīng)性以及可維護性,可以快速部署,同時能降低軟件開發(fā)的生命周期。其工作機制如圖 1-1 所示。圖 1-1 mvc 工作機制圖1 1. .2 2. .2 2 s ss sh h 框框架架ssh 是 struts,spring,hibernate 的縮寫。是當(dāng)前流行的三層架構(gòu):表述層,業(yè)務(wù)邏輯層和數(shù)據(jù)庫層。strutsstruts:用以響應(yīng)用戶的 ac
14、tion,對應(yīng)到相應(yīng)的類進行處理,需要對應(yīng)的包?,F(xiàn)在企業(yè)開發(fā)使用的版本為 struts2。struts2 中大量使用攔截器來處理用戶的請求,從而允許用戶的業(yè)務(wù)邏輯控制器與servlet api 分離。struts2 框架的大概處理流程如下:1. 加載 filterdispatcher 類2. 讀取struts2配置文件中的action類3. 客戶端發(fā)送請求4. filterdispatcher 從 struts 配置文件中讀取與之相對應(yīng)的action5. 啟用攔截器6. 回調(diào) action 的 execute()方法7. 通過 execute 方法將信息返回到filterdispatcher8
15、. filterdispatcher 根據(jù)配置查找響應(yīng)信息,決定將跳轉(zhuǎn)到哪個jsp 頁面9. 響應(yīng)用戶請求hibernatehibernate:用來把實體類對應(yīng)到數(shù)據(jù)庫,用于實現(xiàn)與數(shù)據(jù)庫之間的交互。提供增刪改查的基本操作的實現(xiàn)。需要 hibernate 對應(yīng)的包以及 mysql 的 jdbc 驅(qū)動包。創(chuàng)建hibernate 應(yīng)用程序的準(zhǔn)備:1. 創(chuàng)建數(shù)據(jù)庫2. 創(chuàng)建 hibernate 配置文件 hibernate.cfg.xml3. 創(chuàng)建 package4. 編寫 hibernate 映射文件5. 編寫 pojo 文件6. 編寫 hibernate 工具類7. 編寫測試類springspri
16、ng:管理 struts, xml 配置文件中為 struts 的 action 進行值注入。1 1. .2 2. .3 3 l lo og g4 4j j 日日志志處處理理log4j 是 apache 的一個開放源代碼項目,通過使用 log4j,可以控制日志信息輸送的目的地是控制臺、文件、gui 組件、甚至是套接口服務(wù)器、nt 的事件記錄器、unix syslog 守護進程等;也可以控制每一條日志的輸出格式;通過定義每一條日志信息的級別,能夠更加細致地控制日志的生成過程。最方便的是,上面提到的功能可以通過一個配置文件來靈活地進行配置,而不需要修改應(yīng)用的代碼。2 系統(tǒng)概要設(shè)計本章將從該網(wǎng)絡(luò)商店
17、的后臺信息管理對該項目進行了總體分析說明。暫不考慮前臺業(yè)務(wù)流程的邏輯實現(xiàn),僅考慮其功能。后臺信息管理主要包括會員管理,公告管理,留言管理,管理員服務(wù),商品管理,站點信息管理,積分管理和訂單管理等功能。2.12.1 需求分析需求分析系統(tǒng)需求分析是軟件開發(fā)人員根據(jù)用戶描述說明,對用戶業(yè)務(wù)活動進行分析,明確在用戶的業(yè)務(wù)環(huán)境中軟件系統(tǒng)應(yīng)該“做什么”。下面就對網(wǎng)絡(luò)商店購物系統(tǒng)的需求說明進行分析。.1 系統(tǒng)用戶需求系統(tǒng)用戶需求下面是需求分析中的用戶需求:1. 友好的用戶管理界面。2. 對注冊用戶以及普通管理員進行管理。3. 實現(xiàn)商品的增刪改查等功能。4. 對用戶的留言有最高管理權(quán)限。5.
18、實現(xiàn)站點中的公告及網(wǎng)站的基本功能。6. 能處理用戶的訂單。 .2 系統(tǒng)功能需求系統(tǒng)功能需求下面介紹用戶對程序功能的需求和程序的功能流程:1. 管理員分為超級管理員和普通管理員,超級管理員具有管理普通管理員的權(quán)限。2. 管理員可以管理(增、刪、查)公告。3. 管理員可以管理(增、刪、查)所以注冊用戶信息,但不可管理用戶密碼等私人信息,只可對其權(quán)限進行管理。4. 管理員可以管理(增、刪、改、查)商品信息。5. 管理員可以管理(增、刪、改、查)留言信息。6. 管理員可以管理(增、刪、改、查)訂單信息。7. 管理員可以對站點進行日常維護。8. 后臺管理系統(tǒng)的搜索引擎采用模糊匹配的模式,
19、并且可以選擇多條搜索條件進行檢索。.3 本系統(tǒng)的本系統(tǒng)的頂層用例圖頂層用例圖圖 2-1 網(wǎng)絡(luò)商店購物系統(tǒng)頂層用例圖2 2. .2 2 原原型型法法 本系統(tǒng)采用原型法開發(fā)??焖僭湍P偷牡谝徊绞墙ㄔ煲粋€快速原型,實現(xiàn)客戶或未來的用戶與系統(tǒng)的交互,用戶或客戶對原型進行評價,進一步細化待開發(fā)軟件的需求。通過逐步調(diào)整原型使其滿足客戶的要求,開發(fā)人員可以確定客戶的 真正需求是什么;第二步則在第一步的基礎(chǔ)上開發(fā)客戶滿意的軟件產(chǎn)品。顯然,快速原型方法可以克服瀑布模型的缺點,減少由于軟件需求不明確帶來的開發(fā)風(fēng)險,具有顯著的效果。 快速原型的關(guān)鍵在于盡可能快速地建造出軟件原型,一旦確定了客戶的真
20、正需求,所建造的原型將被丟棄。因此,原型系統(tǒng)的內(nèi)部結(jié)構(gòu)并不重要,重要的是必須迅速建立原型,隨之迅速修改原型,以反映客戶的需求。原型化軟件開發(fā)要突出一個“快”字。采用瀑布模型時,軟件的需求分析也可以在用戶和系統(tǒng)分析員之間往復(fù)討論,使之逐步趨于完善。但這種討論終究是 “紙上談兵”。而原型系統(tǒng)則是“真槍實彈”,能夠使用戶立刻與想象中的目標(biāo)系統(tǒng)作出比較。軟件開發(fā)人員向用戶提供一個“樣品 ” ,用戶向開發(fā)為人員迅速做出“反饋 ” ,這就是原型軟件開發(fā)的優(yōu)越性。圖 2-2 原型法2 2. .3 3 系系統(tǒng)統(tǒng)總總體體設(shè)設(shè)計計根據(jù)需求分析,網(wǎng)絡(luò)商店購物管理系統(tǒng)共可分為如下八個功能模塊:會員管理、公告管理、留言
21、管理、管理員服務(wù)、商品管理、站點信息管理、積分管理和訂單管理。下面對每個功能模塊進行具體分析。.1 1 系統(tǒng)業(yè)務(wù)流程系統(tǒng)業(yè)務(wù)流程圖 2-3 系統(tǒng)功能邏輯結(jié)構(gòu)圖.2 2 會員管理功能模塊會員管理功能模塊管理員可以根據(jù)條件查詢出會員信息結(jié)果,然后可以對所選會員進行注銷操作。圖 2-4 會員管理用例圖.3 公告管理功能模塊公告管理功能模塊管理員可以發(fā)布新的公告,并可以對公告進行管理,根據(jù)發(fā)布的公告主題或發(fā)布時間查詢公告,然后可以對具體公告進行修改,刪除操作。圖 2-5 公告管理用例圖.4 留言管理功能模塊留言管理功能模塊管理員可以管理任何商
22、品留言,而會員和游客只能管理自己的商品留言。圖 2-6 留言管理用例圖.5 管理員服務(wù)功能模塊管理員服務(wù)功能模塊超級管理員可以添加管理員,根據(jù)會員 id 查詢管理員,然后可以禁用所選會員,并且可以修改管理員密碼;而普通管理員只具有查看信息,修改密碼權(quán)限。圖 2-7 管理員服務(wù)用例圖.6 商品管理功能模塊商品管理功能模塊管理員可以對商品信息進行管理,包括新品發(fā)布,商品信息修改,商品下架,統(tǒng)計庫存,商品搜索;商品搜索可以根據(jù)關(guān)鍵字查詢或特征查詢。圖 2-8 商品管理用例圖.7 站點信息管理功能模塊站點信息管理功能模塊管理員可以修改站點的 logo 和
23、服務(wù)條款的管理。圖 2-9 站點信息管理用例圖.8 積分管理功能模塊積分管理功能模塊管理員可以管理積分規(guī)則設(shè)置和兌換規(guī)則設(shè)置;對每一項規(guī)則具有制定,修改和刪除操作權(quán)限。圖 2-10 積分管理用例圖.9 訂單管理功能模塊訂單管理功能模塊管理員可以根據(jù)條件查詢出訂單信息,然后可以對訂單進行管理,并且可以導(dǎo)出訂單;其中導(dǎo)出訂單可以是單個導(dǎo)出和批量導(dǎo)出。圖 2-11 訂單管理用例圖2 2. .4 4 數(shù)數(shù)據(jù)據(jù)庫庫分分析析與與設(shè)設(shè)計計數(shù)據(jù)庫的設(shè)計是該網(wǎng)絡(luò)商店購物管理系統(tǒng)的核心內(nèi)容,依據(jù)需要,系統(tǒng)定義了常用視圖、索引和序列。用戶對于數(shù)據(jù)庫的需求具體體現(xiàn)在各種信息的提供、保存
24、、更新和查詢上,這就要求數(shù)據(jù)庫的結(jié)構(gòu)能充分滿足各種信息的輸入和輸出上。本系統(tǒng) 所采用的數(shù)據(jù)庫是 oracle 11g,能滿足系統(tǒng)的需求。.1 數(shù)據(jù)庫的定義數(shù)據(jù)庫的定義圖 2-12 數(shù)據(jù)庫表間關(guān)系圖.2 表定義表定義在數(shù)據(jù)庫設(shè)計的時候,是將商品的屬性與圖片區(qū)分開,總共將商品分為五大類:食品(food)、書籍(book)、文具(stationery)、數(shù)碼電子(electronics)、生活用品(dailypro)。下面只列出食品表。具體涉及的各個表屬性如下:表 2-1 食品表(food)邏輯名字段名數(shù)據(jù)類型長度空值備注商品編號proidchar13not null
25、主鍵商品名稱pronamevarchar220not null類別分類編號sub_typenumber8not null價格pricenumber7,2not null保質(zhì)期validdaysvarchar28not null庫存量amountnumber5not null生產(chǎn)日期prodatedatenot null生產(chǎn)廠家producervarchar22000not null銷量sale_amountnumber20not null上架日期reg_timedatenot null表 2-2 商品圖片表(products_pictures)邏輯名字段名數(shù)據(jù)類型長度空值備注商品編號proid
26、char13not null主鍵大圖片big_picvarchar2100中圖片mid_picvarchar2100小圖片small_picblob表 2-3 會員信息表(member)邏輯名字段名數(shù)據(jù)類型長度空值備注會員 idmember_idchar10not null主鍵會員名member_namevarchar220not null密碼member_passwordchar9not null電子郵箱member_emailvarchar230not null真實姓名true_namevarchar220not null密碼保護問題pwd_quevarchar230not null密碼保
27、護問題答案pwd_ansvarchar220not null會員狀態(tài)statusdatenot null表 2-4 公告信息表(notice)邏輯名字段名數(shù)據(jù)類型長度空值備注公告編號notice_idnumber9,0not null主鍵公告名稱notice_titlevarchar230not null公告內(nèi)容notice_contentvarchar2300not null發(fā)布日期notice_timedatenot null表 2-5 訂單表(t_order)邏輯名字段名數(shù)據(jù)類型長度空值備注訂單編號order_idchar10not null主鍵訂單日期order_timedatenot
28、 null訂購者buyer_idvarchar220not null郵寄地址send_addrvarchar2100not null訂單狀態(tài)order_statuschar6not null總價all_pricenumber7,2電話tellvarchar218not null手機號cellphonevarchar218not null其他信息other_infovarchar2300表 2-6 管理員表(admin)邏輯名字段名數(shù)據(jù)類型長度空值備注管理員名admin_idchar9not null主鍵密碼admin_passwordchar10not null權(quán)限admin_privileg
29、echar6not null狀態(tài)admin_statuschar6not null其他信息other_infovarchar23003 系統(tǒng)詳細設(shè)計3 3. .1 1 主主要要功功能能模模塊塊詳詳細細設(shè)設(shè)計計詳細介紹網(wǎng)絡(luò)商店購物管理系統(tǒng)各個功能模塊的描述信息,以及各個功能之間的關(guān)系,系統(tǒng)爭對不同用戶的需要作出相應(yīng)的回應(yīng),懂得各個頁面的跳轉(zhuǎn)方向。3 3. .1 1.1.1 會員查詢頁面會員查詢頁面管理員可以根據(jù)會員的倆個屬性:會員id 和會員名,進行對會員的檢索,同時對檢索出來的會員的權(quán)限進行操作。圖 3-1 會員查詢頁面遷移圖下面為會員查詢頁面圖 3-2 會員查詢頁面.2 發(fā)布
30、新公告及公告管理頁面發(fā)布新公告及公告管理頁面管理員可以發(fā)布新主題的公告,并且可以根據(jù)公告主題或發(fā)布時間檢索已經(jīng)發(fā)布的公告,然后可以對這些公告進行管理。圖 3-3 發(fā)布新公告頁面遷移圖圖 3-4 發(fā)布新公告頁面圖 3-5 公告管理頁面遷移圖圖 3-6 公告管理頁面.3 商品留言頁面商品留言頁面管理員可以根據(jù)商品的種類或商品的名稱對商品進行檢索,然后可以查看商品的留言,并可以對那些留言進行管理。圖 3-7 商品留言頁面遷移圖圖 3-8 商品留言頁面.4 添加管理員、禁用管理員和修改密碼頁面添加管理員、禁用管理員和修改密碼頁面此項功能只有超級管理員有權(quán)限。其可以對普通
31、管理員進行添加、禁用、修改密碼等操作。圖 3-9 添加管理員頁面遷移圖圖 3-10 添加管理員頁面圖 3-11 禁用管理員頁面遷移圖圖 3-12 禁用管理員頁面圖 3-13 修改密碼頁面遷移圖圖 3-14 修改密碼頁面.5 商品添加、修改和下架頁面商品添加、修改和下架頁面管理員可以對各類商品信息進行管理。圖 3-15 商品添加頁面遷移圖圖 3-16 商品添加頁面進行商品信息修改時,必須先根據(jù)條件查詢出所需要的商品信息。然后才可對其進行管理。圖 3-17 商品查詢頁面遷移圖圖 3-18 商品查詢頁面圖 3-19 商品信息修改頁面圖 3-20 商品下架頁面.6 lo
32、gologo 更改和服務(wù)條款管理頁面更改和服務(wù)條款管理頁面管理員可以更新網(wǎng)絡(luò)商店的logo 以及網(wǎng)絡(luò)商店的一些服務(wù)條款。圖 3-21 logo 更改頁面遷移圖圖 3-22 logo 更改頁面圖 3-23 服務(wù)條款管理頁面遷移圖圖 3-24 服務(wù)條款管理頁面.7 積分規(guī)則查看、設(shè)置和兌換規(guī)則設(shè)置頁面積分規(guī)則查看、設(shè)置和兌換規(guī)則設(shè)置頁面管理員可以查看會員的積分,同時可以設(shè)置積分規(guī)則和兌換規(guī)則。圖 3-25 積分規(guī)則查看頁面遷移圖圖 3-26 積分規(guī)則設(shè)置頁面遷移圖圖 3-27 積分規(guī)則查看頁面圖 3-28 積分規(guī)則設(shè)置頁面圖 3-29 兌換規(guī)則頁面遷移圖圖 3-30 兌換規(guī)則設(shè)置頁
33、面.8 訂單管理頁面訂單管理頁面管理員可以根據(jù)訂單的任何一個屬性查詢訂單,查看其狀態(tài)并對訂單進行管理。圖 3-31 訂單管理頁面遷移圖圖 3-32 訂單查詢頁面4 系統(tǒng)實現(xiàn)4 4. .1 1 系系統(tǒng)統(tǒng)搭搭建建及及初初始始化化配配置置系統(tǒng)選用的服務(wù)器是tomcat6.0,后臺數(shù)據(jù)庫選用的是oracle。系統(tǒng)的開發(fā)工具選用的是 eclipse 。4 4. .1 1. .1 1 搭搭建建 s st tr ru ut ts s2 2 開開發(fā)發(fā)環(huán)環(huán)境境總體上概述來說,首先需要從apache 官網(wǎng)上下載的struts2 的所有組件后解壓,然后將其 jar 包及其依賴包導(dǎo)入web-inf/l
34、ib 目錄下,最后還要在web.xml 中配置,最后創(chuàng)建 struts2 的核心配置文件strut.xml。lib 目錄下的 jar 包如下圖所示:圖 4-1 struts2 所需的 jar 包web.xml 的核心配置代碼如下: struts2 org.apache.struts2.dispatcher.filterdispatcher struts2 /* strut.xml 的核心配置代碼如下: 4 4. .1 1. .2 2 搭搭建建 h hi ib be er rn na at te e 開開發(fā)發(fā)環(huán)環(huán)境境與搭建 struts2 環(huán)境類似,搭建hibernate3 開發(fā)環(huán)境需要先從hi
35、bernate 首頁上下載 hibernate 開發(fā)組件,解壓后將必須的jar 包(hibernate3.jar、commons-collections.jar 等總計八個)導(dǎo)入項目,最后在工程的src 目錄中創(chuàng)建hibernate 的配置文件。hibernate 的配置文件可以為屬性文件(perties)或者是 xml 文件(hibernate.cfg.xml),相比之下,xml 配置方式更為常見。本平臺的原始配置文件的核心配置代碼如下: jdbc:oracle:thin:localhost:1521:orcl scott tigerorg.hibernate.di
36、alect.oracledialect oracle.jdbc.driver.oracledriver4 4. .2 2 創(chuàng)創(chuàng)建建包包目目錄錄結(jié)結(jié)構(gòu)構(gòu)網(wǎng)絡(luò)商店購物管理系統(tǒng)都是以工廠的模式進行創(chuàng)建的,由實體工廠、抽象工廠、實現(xiàn)類三部分組成。4 4. .2 2. .1 1 共共通通包包構(gòu)構(gòu)成成表 4-1 共通包結(jié)構(gòu)表分類包名說明mon.dao放置 dao 共通接口的包mon.dao.impl放置 dao 共通類的包mon.util放置工具類的包共通包mon.exception放置自定義例外類的包4 4. .2 2. .2 2 業(yè)業(yè)務(wù)務(wù)包包構(gòu)構(gòu)成成表 4-2 業(yè)務(wù)包結(jié)構(gòu)表分類包名說明backend.
37、xmlaction 配置文件,國際化messagebackend.form放置表單類的包backend.action放置 action 的包backend.business放置業(yè)務(wù)接口類的包backend.impl放置業(yè)務(wù)實現(xiàn)類的包backend.business.pojos放置各表的pojo 類的包backend.dao放置 dao 接口的包業(yè)務(wù)包backend.dao.impl放置 dao 實現(xiàn)類的包4 4. .2 2. .3 3 持持久久化化層層包包構(gòu)構(gòu)成成表 4-3 持久化層包結(jié)構(gòu)表分類包名說明backend.hibernate.cfg.file放置 hibernate 配置文件的包b
38、ackend.hibernate.hbm.file放置映射文件的包持久化層包backend.hibernate.util放置 hibernate 工具類的包4 4. .3 3 s st tr ru ut ts s 模模塊塊的的實實現(xiàn)現(xiàn)struts 主要處理用戶輸入的表單信息,實現(xiàn)用戶與站點間的交互,動態(tài)生成用戶所需要的信息。下面為本系統(tǒng)的struts.xml 的配置方法: /backend/pages/common/management.jsp/index.jsp4 4. .4 4 h hi ib be er rn na at te e 模模塊塊的的實實現(xiàn)現(xiàn)當(dāng) hibernate 配置成功之后
39、,用戶可實現(xiàn)與數(shù)據(jù)庫的交互,下面介紹本系統(tǒng)與數(shù)據(jù)庫連接的方法(以管理員admin 為范例)。.1 編寫編寫 pojopojo 類類在 backend.hibernate.pojos 及其下級目錄下創(chuàng)建表 admin 對應(yīng)的 pojo 類admin.java,其他與此類似,該類必須包含admin 對象的所有屬性,這些屬性必須與其在數(shù)據(jù)庫 admin 表中的屬性一一對應(yīng)。下面為admin 的 pojo 類(注:屬性的getter 和setter 方法僅列舉adminid 屬性):public class admin /* 管理員id */private string adminid
40、 = null;/* 管理員密碼 */private string password = null;/* 管理員權(quán)限 */private string priviledge = null;/* 管理員狀態(tài) */private string status = null;/* 備注信息 */private string otherinfo = null;/* * 無參構(gòu)造 */public admin() public admin(string adminid, string password, string priviledge, string status, string note)this.
41、setadminid(adminid);this.setpassword(password);this.setpriviledge(priviledge);this.setstatus(status);this.setotherinfo(note);/getters and setterspublic string getadminid() return adminid;public void setadminid(string adminid) this.adminid = adminid;.2 編寫并配置映射文件編寫并配置映射文件在 backend.hibernate.hb
42、m.file 目錄下創(chuàng)建數(shù)據(jù)表admin 對應(yīng) pojo 類的hibernate 映射文件 admin.hbm.xml 并配置。具體配置信息如下:.3 編寫編寫 sessionsession 工廠工廠在 backend.hibernate.util 目錄下創(chuàng)建session 工廠類 hibernateutil.java,該類提供了獲得當(dāng)前session 和關(guān)閉 session 的方法,其核心代碼如下所示。 (注:省略了異常的拋出、捕獲與處理代碼)public class hibernateutil private static sessionfactory sessionfac
43、tory; /* 持有一個單態(tài)的session實例. */ private static final threadlocal threadlocal = new threadlocal(); /* 持有一個單態(tài)的configuration實例. */ private static final configuration cfg = new configuration(); private static string config_file_location = backend/hibernate/cfg/file/hibernate.cfg.xml;static try sessionfact
44、ory = new configuration().configure(config_file_location) .buildsessionfactory(); catch (throwable ex) / make sure you log the exception, as it might be swallowed system.err.println(initial sessionfactory creation failed. + ex);throw new exceptionininitializererror(ex); public static sessionfactory
45、getsessionfactory() return sessionfactory; /* * 獲得當(dāng)前的session實例. * return session * throws hibernateexception */ public static session currentsession() throws hibernateexception session session = (session) threadlocal.get(); /if (session = null) if(session=null|session.isopen()=false) if (sessionfact
46、ory = null) try cfg.configure(config_file_location); sessionfactory = cfg.buildsessionfactory(); catch (exception e) system.err.println(% error creating sessionfactory % + e.getmessage(); session = sessionfactory.opensession(); threadlocal.set(session); return session; 4 4. .5 5 l lo og g4 4j j 日日志志
47、處處理理本系統(tǒng)要求將所有用戶的操作記錄到硬盤文件,因此需要將 commons-logging-1.0.4.jar,commons-logging.jar 和 log4j-1.2.11.jar 這三個 jar 文件拷貝到 lib 目錄下,同時創(chuàng)建 perties 文件,放到 src 目錄下面,其具體配置如下:#設(shè)置輸出級別和目的地log4j.rootlogger=debug,console#輸出到控制臺log4j.appender.console=org.apache.log4j.consoleappender#輸出的樣式log4j.appender.console.layou
48、t=org.apache.log4j.ttcclayout#設(shè)置特定包的級別和目的地#log4j.logger.包名=級別,目的地log4j.logger.backend.bulletin.business.impl=debug,appender1log4j.logger.backend.bulletin.dao.impl=debug,ment.business.impl=debug,ment.dao.impl=debug,mon.dao.impl=debug,appender1log4j.logger.backend.goods.business.impl=debug,appender1lo
49、g4j.logger.backend.goods.dao.impl=debug,appender1log4j.logger.backend.login.business.impl=debug,appender1log4j.logger.backend.login.dao.impl=debug,appender1log4j.logger.backend.member.business.impl=debug,appender1log4j.logger.backend.member.dao.impl=debug,appender1log4j.logger.backend.order.business
50、.impl=debug,appender1log4j.logger.backend.order.dao.impl=debug,appender1log4j.logger.backend.siteinfo.business.impl=debug,appender1log4j.logger.backend.siteinfo.dao.impl=debug,appender1log4j.logger.backend.staff.business.impl=debug,appender1log4j.logger.backend.staff.dao.impl=debug,appender1#輸出到文件lo
51、g4j.appender.appender1=org.apache.log4j.dailyrollingfileappender#設(shè)置每天產(chǎn)生日志的命名規(guī)則log4j.appender.appender1.datepattern=.yyyy-mm-dd#設(shè)置日志消息輸出到shopcart.html中l(wèi)og4j.appender.appender1.file=c:/shopcartbackend.html#設(shè)置將日志消息追加到指定文件中l(wèi)og4j.appender.appender1.append=true#設(shè)置日志消息輸出的最低層次log4j.appender.appender1.thresh
52、old=info#輸出的樣式log4j.appender.appender1.layout=org.apache.log4j.htmllayout#將struts和hibernate的debug和info信息去掉.opensymphony.xwork2=warn.apache.struts2=warnmons=warn.hibernate=warnlog4j.logger.freemarker.cache=warn.sf.ehcache=warn4 4. .6 6 圖圖片片處處理理對于商品圖片,本系統(tǒng)的處理方式是:將商品的小圖片轉(zhuǎn)
53、化成 blob 形式存儲在數(shù)據(jù)庫中,而對中圖和大圖,只將其路徑存儲在數(shù)據(jù)庫中,這樣有利于提高系統(tǒng)的性能。具體實現(xiàn)代碼如下:/ 小圖if(smallpic != null)string temp = null; file filetempsmall = new file(destdir + foodpicture.getsmallpic(); if(filetempsmall.exists() filetempsmall.deleteonexit(); try / 由struts上傳文件時獲得的臨時文件*.tmp創(chuàng)建臨時圖片temp = fileserviceimpl.uploadfile(sm
54、allpic, destdir, smallpicfilename.substring(smallpicfilename.lastindexof(.); catch (appexception e) e.printstacktrace();return input; catch (exception e) e.printstacktrace();return input; / 中圖if(midpic != null) file filetempmid = new file(destdir + foodpicture.getmidpic(); if(filetempmid.exists() fi
55、letempmid.delete(); try / 上傳圖片至服務(wù)器string realpath = fileserviceimpl.uploadfile(midpic, destdir +midimgs,midpicfilename.substring(midpicfilename.lastindexof(.);foodpicture.setmidpic(imagesmidimgs + realpath.substring(realpath.lastindexof(); catch (appexception e) e.printstacktrace();return input; cat
56、ch (exception e) e.printstacktrace();return input; / 大圖if(bigpic != null) file filetempbig = new file(destdir + foodpicture.getbigpic(); if(filetempbig.exists() filetempbig.delete(); try / 上傳圖片至服務(wù)器string realpath = fileserviceimpl.uploadfile(bigpic, destdir + bigimgs,bigpicfilename.substring(bigpicf
57、ilename.lastindexof(.);foodpicture.setbigpic(imagesbigimgs + realpath.substring(realpath.lastindexof();5 系統(tǒng)測試5 5. .1 1 測測試試工工具具本系統(tǒng)采用junit 對所寫代碼進行測試,junit 是由 erich gamma 和 kent beck 開發(fā)的開源測試框架eclipse 集成了這個框架。junit 之所以流行并為廣大的開發(fā)人員所推崇,一是因為它實戰(zhàn)性強,功能強大,二是因為它實在簡單。一個產(chǎn)品或框架要能有生命力,最好都具備這樣的特點。簡單地講這個框架提供了許多斷言(asse
58、rt)方法,允許你設(shè)置測試的規(guī)則,如:assertequals()、assertnull()、assertnotsame()、asserttrue()等方法,一個測試用例包括了多個斷言,當(dāng)運行測試用例后, junit 運行器會報告哪些斷言沒有通過,開發(fā)人員就可順藤摸瓜搞個水落石出了。而傳統(tǒng)的測試方法需要將期望的結(jié)果用諸如system.out.println()等語句將過程信息打印到控制臺或日志中,由開發(fā)人員觀察輸出信息以判斷是否正確,現(xiàn)在這種 觀察的工作由 junit 的那些 assertxxx()方法自動完成。5 5. .2 2 測測試試用用例例本例以會員管理這一功能模塊進行測試,其測試代碼
59、如下(此處僅列出一個會員屬性的測試方法):public class testmemberdaoimpl extends testcase private session session=null; protected void setup() throws exception super.setup();this.session=hibernateutil.currentsession();this.session.begintransaction();protected void teardown() throws exception super.teardown();public void testdeletemember001() string userinfo=null; memberdaoimpl memberdao=new memberdaoimpl(); boole
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度大理石石材開采與承包安全生產(chǎn)協(xié)議4篇
- 2025與人合作簽合同模板
- 2025年智能倉儲物流租賃協(xié)議物流革新3篇
- 二零二五版第三人民醫(yī)院醫(yī)院醫(yī)療廢棄物處理與回收合同3篇
- 老年2型糖尿病合并胃腸自主神經(jīng)病變患者心理狀況和睡眠質(zhì)量的研究
- A286高溫合金鋼緊固件近凈成形工藝研究
- 莓茶葉中黃酮類化合物的提取、純化及其在化妝品中的應(yīng)用
- 2025年房產(chǎn)買賣合同爭議解決機制范本4篇
- 2025版?;穬Υ鎴龅刈赓U與環(huán)境保護技術(shù)支持合同3篇
- 二零二五年度醫(yī)療設(shè)備采購承包合同終止協(xié)議范本4篇
- 第1課 隋朝統(tǒng)一與滅亡 課件(26張)2024-2025學(xué)年部編版七年級歷史下冊
- 2025-2030年中國糖醇市場運行狀況及投資前景趨勢分析報告
- 冬日暖陽健康守護
- 水處理藥劑采購項目技術(shù)方案(技術(shù)方案)
- 2024級高一上期期中測試數(shù)學(xué)試題含答案
- 山東省2024-2025學(xué)年高三上學(xué)期新高考聯(lián)合質(zhì)量測評10月聯(lián)考英語試題
- 不間斷電源UPS知識培訓(xùn)
- 三年級除法豎式300道題及答案
- 品學(xué)課堂新范式
- GB/T 1196-2023重熔用鋁錠
- 幼兒園教師培訓(xùn):計數(shù)(數(shù)數(shù))的核心經(jīng)驗
評論
0/150
提交評論