E-Store系統(tǒng)詳細說明_第1頁
E-Store系統(tǒng)詳細說明_第2頁
E-Store系統(tǒng)詳細說明_第3頁
E-Store系統(tǒng)詳細說明_第4頁
E-Store系統(tǒng)詳細說明_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

E-Store詳細設(shè)計說明書開發(fā)時間:2010-6-3結(jié)束時間:2010-7-5開發(fā)組員:張學(xué)武楊歡胡蓉劉冬冬汪利君何珍妮目錄1、說明2、引言2.1.編寫目的項目背景3、項目概述項目系統(tǒng)設(shè)計架構(gòu)及理念4、項目詳細設(shè)計說明系統(tǒng)功能說明系統(tǒng)操作流程系統(tǒng)設(shè)計數(shù)據(jù)庫設(shè)計5、項目代碼說明前臺代碼后臺管理6、開發(fā)過程出現(xiàn)的問題及解決方法1、說明:該電子書城系統(tǒng)詳細說明報告主要包括以下內(nèi)容:1、引言:系統(tǒng)的相關(guān)背景介紹2、項目概述:E-Store系統(tǒng)項目組成員、設(shè)計理念及思路、項目進程3、系統(tǒng)詳細設(shè)計說明,包括:系統(tǒng)功能說明、系統(tǒng)架構(gòu)設(shè)計系統(tǒng)操作流程、ER圖、數(shù)據(jù)庫連接4、系統(tǒng)特色技術(shù)及代碼說明5、項目過程中出現(xiàn)的問題及解決辦法2、引言編寫目的編寫《E-Store系統(tǒng)詳細說明報告》是為了得出對電子商城系統(tǒng)準確的描述,陳列出該系統(tǒng)的的多種功能及其使用方法,方便系統(tǒng)管理管理人員及使用者操作。該《說明》的讀者是:參與系統(tǒng)開發(fā)的管理人員和設(shè)計人員。項目背景進入21世紀以來,電子商務(wù)伴隨著IT的成熟,逐漸發(fā)展壯大,成為網(wǎng)絡(luò)經(jīng)濟的核心。在電子商務(wù)的發(fā)展過程中,人們逐漸意識到在線購物的無地域界限、安全、方便快捷及其價格優(yōu)勢,在線購物的隊伍也隨之擴大。不斷增長的強大需求正成為電子商務(wù)的發(fā)展動力,基礎(chǔ)環(huán)境的成熟與需求欲望的增長將推動電子商務(wù)與商務(wù)網(wǎng)站的建設(shè)不斷發(fā)展。開發(fā)E-Store,能夠讓消費者很快就可以搜尋到想要的書籍;例如留言板、討論區(qū)、E-MAIL服務(wù),更是為傳統(tǒng)書店提供多元化的服務(wù)。3、項目概述項目系統(tǒng)設(shè)計架構(gòu)及理念理念:網(wǎng)上書店商務(wù)網(wǎng)站構(gòu)建初始目標主要是面向廣大消費者,由于圖書消費屬于知識型消費類,人們求知欲望沒有階層與年齡差別,因而,書店網(wǎng)站應(yīng)在具有自己特色的同時應(yīng)適合不同人士的需要。因此,網(wǎng)上書店網(wǎng)站定位于面向廣大消費者,并突出完善售前、售中、售后客戶服務(wù)與安全保障方面的特色。售前服務(wù)提供詳細的圖書信息、簡便快捷的操作過程;售中服務(wù)通過采取安全措施為用戶提供網(wǎng)上訂購服務(wù)安全保障與實時支付;售后服務(wù)對用戶訂購的圖書提供快速物流配送,并對用戶所購圖書提供質(zhì)量保證。架構(gòu):前臺功能結(jié)構(gòu)前臺功能I模塊111商品展示■商品查詢商品購買■訂單管理會員管理■網(wǎng)站新聞?wù)故旧唐菲放普故尽龊笈_功能結(jié)構(gòu)后臺管理模塊1商品管理訂單管理會員管理管理員管理1F1■■I商品列表II商品添加II商品維護4、項目詳細設(shè)計說明詳細功能說明在前臺實現(xiàn)主要有:用戶注冊用戶登陸查看全部圖書查看圖書詳細情況購物車功能圖書選購查看用戶的訂單信息顯示結(jié)賬頁面和確認頁面購買成功頁面。后臺管理部分主要有:商店圖書管理:添加、修改、刪除、查看。用戶信息管理:查看、修改、刪除。訂單信息管理:查看訂單清單、更新訂單付款、刪除訂單。管理員管理:管理員添加,刪除,密碼修改,查詢。4、2項目整體操作說明(1)顧客在進行第一次購物之前要進行注冊。一般要求輸入用戶名和密碼等基本信息。注冊完后,系統(tǒng)會顯示一個登陸頁面;(2)進入網(wǎng)上商店,查看,挑選商品。顧客可以按產(chǎn)品類別檢索商品,找出所關(guān)心的商品;(3)查看商品細節(jié)說明,了解價格、付款方式、購物說明等詳細信息;(4)選中商品后,點擊“放入購物車”按鈕,將商品放入購物車;如需繼續(xù)購物則點擊“繼續(xù)購物”按鈕;(5)選購結(jié)束,檢查購物車,核實商品和數(shù)量是否正確,如有出入,可以重新調(diào)整商品和數(shù)量,如無誤,則點擊“結(jié)帳”按鈕;(6)在結(jié)賬頁面填寫自己的相關(guān)信息,如姓名,信用賬號,電話號碼等基本信息,完成結(jié)賬;在驗證頁面核對結(jié)賬信息,如無誤點擊“確定”完成購物過程,如有誤則返回結(jié)賬頁面進行修改。后臺管理人員的操作過程:1.管理人員輸入用戶名,密碼進入管理頁面。2.管理人員進入管理頁面,可進行商店圖書查詢,添加圖書資料訂單信息查詢,用戶信息查詢。3.管理人員點擊商店圖書查詢頁面。4.管理人員點擊添加圖書資料頁面:輸入需添加的圖書信息,管理人員點擊提交向后臺數(shù)據(jù)庫提交信息。提交成功的話,頁面顯示新圖書資料提交成功,否則顯示數(shù)據(jù)庫操作失敗。5.管理人員點擊訂單查詢頁面:頁面顯示出已接到訂單,其中包括圖書名稱,作者,圖書類別,單價,數(shù)量,以及總金額,總數(shù)量。6.管理人員點擊用戶信息查詢頁面:頁面顯示出用戶的基本信息。管理員可以進行用戶的刪除查找動作。刪除成功后,頁面顯示刪除成功。系統(tǒng)操作流程前臺流程:

后臺流程:4.4.數(shù)據(jù)庫設(shè)計書本信息表:titles用來存儲書本相關(guān)信息書本大類別表:tb_bigType用來保存書本大類別信息書本大類別表:tb_samllType用來保存書本大類別信息

訂單信息表:tb_order用來保存前臺用戶提交的訂單信息聯(lián)系地址真實姓名訂單編號付款方式備注信息送貨方式-會員名稱訂單信息表:tb_order用來保存前臺用戶提交的訂單信息聯(lián)系地址真實姓名訂單編號付款方式備注信息送貨方式-會員名稱聯(lián)系電話出貨標志訂單詳細訂單表:tb_orderDetail用來保存用戶提交訂單的詳細信息友情鏈接表:tb_link存儲商城中超鏈接的各個網(wǎng)站商城信息表:tb_info用于存儲商城公告信息用戶信息表:tb_user用于存儲商城注冊用戶信息真實姓名會員編號會員找回密碼問題會員名稱登錄密碼年齡c.__問題答案真實姓名會員編號會員找回密碼問題會員名稱登錄密碼年齡c.__問題答案職業(yè)電子郵件管理員信息表:tb_manager用于存儲后臺管理員信息5、項目代碼說明前臺代碼A、前臺會員管理模塊1、會員登錄模塊流程分析與設(shè)計功能實現(xiàn)流程設(shè)計功能開始V會員登錄信Login.jsp息輸入N密碼獲取頁面參數(shù)LoginResultjspY會員不存在登錄成功保存功能結(jié)束查詢數(shù)據(jù)功能開始V會員登錄信Login.jsp息輸入N密碼獲取頁面參數(shù)LoginResultjspY會員不存在登錄成功保存功能結(jié)束查詢數(shù)據(jù)編程詳解:(1)login.jsp頁面中提供會員或管理員登錄的信息輸入,由會員或后臺管理員輸入登錄名和密碼,以請求參數(shù)的形式提交給LoginResult.jsp處理。(2)LoginResult.jsp頁面獲取頁面請求參數(shù)用戶名與密碼。(3)以會員名(后臺管理員)為參數(shù)調(diào)用UserDao(MemberDao)類的selectUserEntity(selectMemberEntity)方法,查詢數(shù)據(jù)庫表。(4)查詢結(jié)果為空,提示“會員不存在,請重新登錄”或“管理員不存在,請重新登錄”,否則將方法返回的會員信息表實體對象保存。(5)對實體對象的密碼與頁面請求參數(shù)密碼(即會員(管理員)在登錄時輸入的密碼)比較,密碼不一致,登錄失敗,頁面提示重新登錄,系統(tǒng)頁面跳轉(zhuǎn)到

首頁。(6)會員密碼驗證一致,則登錄成功,系統(tǒng)顯示成功信息,頁面跳轉(zhuǎn)至前臺商品展示頁面,同時將會員信息保存在會話中,以供會員本次在網(wǎng)站訪問時使用。同樣,后臺管理員登陸成功后進入后臺頁面,也將信息保存在會話中,以供管理員在進行后臺管理時使用。2、會員注冊模塊功能實現(xiàn)流程設(shè)計次迎7王冊戯對平站臺貝檢測用戶*密碼m字符*密碼保護問題答案*請輸入上邊的字符L如:1989-09-07創(chuàng)建您的賬號’安全信息設(shè)置=(以下信息非常重要,[請慎重填寫)*性別:o次迎7王冊戯對平站臺貝檢測用戶*密碼m字符*密碼保護問題答案*請輸入上邊的字符L如:1989-09-07創(chuàng)建您的賬號’安全信息設(shè)置=(以下信息非常重要,[請慎重填寫)*性別:o男o女~■,魚川|]…歡迎閱讀服務(wù)衆(zhòng)款協(xié)謖,本協(xié)謖闡述之祭款和衆(zhòng)件適總于水用戶名:★再次輸入密碼:*密碼保護問題:*出生日期注3ft驗證’q-12個字符i青選扌華密碼提示問題a編程詳解:1、在uesrRegister.jsp中提供功能入口鏈接<ahref="userRegister.jsp">注冊</a>2、創(chuàng)建userRegister.jsp,頁面設(shè)計提交表單3、創(chuàng)建User.jsp,該頁面實現(xiàn)實際數(shù)據(jù)庫操作,并不生成返回瀏覽器的頁面,數(shù)據(jù)庫操作結(jié)果以JSP隱含對象request的屬性將請求轉(zhuǎn)發(fā)到doRegister.jsp顯示<jsp:forwardpage="doRegistert.jsp"></jsp:forward>3、會員信息修改功能開始frameTop.jsp功能實現(xiàn)流程設(shè)計:功能開始frameTop.jsp會員信息修改鏈接會員注冊信息

顯示、輸入輸入信息驗證userUpdate.jsp.登錄會員注冊信息

顯示、輸入輸入信息驗證userUpdate.jsp.登錄編程詳解:1、修改main.jsp2、判斷會員是否登錄因為在會員登錄后會將會員信息以類UserEntity的對象形式在JSP隱含對象session中存放,故可使用判斷session對象是否存有會員信息對象來判斷是否登錄。<%Stringuserlink="userLoginPlease.jsp";//user是會員登錄后存放在session對象上的屬性名if(session.getAttribute("user")==null){}UserEntityuser=UserEntity)session.getAttribute("user");userlink="userUpdate.jsp?name="+user.getName();%>4、會員找回密碼功能實現(xiàn)流程設(shè)計:編程詳解:在login.jsp中添加找回密碼的鏈接,鏈接到密碼找回功能的起始頁面findPass.jsp.jsp創(chuàng)建findPass.jsp,頁面風(fēng)格與主頁保持一致,在頁面中設(shè)計一個提交表單,用于提交找回密碼的會員名稱,會員輸入會員名稱后,將作為請求參數(shù)以post方法提交到頁面findPassl.jsp中,提交之前使用JavaScript函數(shù)checkEmpty(form)進行合法性驗證在頁面中引入數(shù)據(jù)庫會員信息表操作類和實體類,使用操作類的selectUserEntity方法以findPassl.jsp提交的請求參數(shù)“會員名稱"做參數(shù)查詢數(shù)據(jù)庫,查詢結(jié)果存放在頁面對象user中。還可以在findPass2.jsp頁面中重新設(shè)置密碼,成功之后跳轉(zhuǎn)到login.jsp頁面,重新登錄。B、前臺商品檢索流程分析與設(shè)計商品檢索功能由兩部分頁面構(gòu)成:搜索內(nèi)容的提交頁面和搜索結(jié)果顯示頁面??紤]到搜索功能應(yīng)是用戶常用的功能,而且搜索內(nèi)容的提交頁面元素不需要許多,因而將搜索提交頁面設(shè)計在通用框架上側(cè)包含的頁面index.jsp中,以頁面的表單元素searchForm存在,并設(shè)計該表單提交的目的地址為執(zhí)行搜索操作并顯示搜索結(jié)果的頁面kind.jsp。<jsp:includepage="goodsShowSort.jsp"flush="true"></jsp:include></td><tdvalign="middle"><formname="searchForm"method="post"action="goodsShowSearch.jsp"onSubmit="returncheckEmpty(searchForm)"><table>編程詳解:1.在GoodsDao類中,添加按商品名稱查詢方法publicListselectGoodsSearch(Stringsearch),方法參數(shù)為String類型的對象,表示商品的名稱,方法返回符合查詢條件的商品鏈表2.在頁面index.jsp中,添加搜索條件提交表單,表單設(shè)計輸入文本,負責接受用戶需要查詢的商品名稱,并將此信息以請求參數(shù)search提交給頁面goodsShowSearch.jsp處理。<tdstyle="top-padding:5px;"width="150"><inputname="search"type="text"size="30"align="left"class="inputStyle"onMouseOver="this.className='inputStyleMove'"onMouseOut="this.className='inputStyle'"></td>3.頁面kind.jsp處理用戶的商品搜素先從頁面請求參數(shù)search中獲取要查詢的商品名稱,然后以此作方法參數(shù)調(diào)用數(shù)據(jù)庫商品信息表操作類BooksDao的selectGoodsSearch()方法//搜索商品BooksDaodao=newBooksDao();Stringsearch二request.getParameter("search");//獲取在上頁面search中輸入的搜索內(nèi)容ListsearchList=(List)dao.selectGoodsSearch(search);intpageNumber=searchList.size();//計算出有多少條記錄intmaxPage=pageNumber;//計算有多少頁數(shù)4、編寫goodsShowSearch.jsp頁面C、前臺購物車管理1)商品詳細信息顯示

查看詳細信息鏈接功能開始mam.jspgoodsShowSelectNew.jspgoodsShowSelectFree.jsp>釋放資源查看詳細信息鏈接功能開始mam.jspgoodsShowSelectNew.jspgoodsShowSelectFree.jsp>釋放資源編程詳解:1、創(chuàng)建goodsShowSelectOne.jsp,在頁面中引入數(shù)據(jù)庫商品信息表操作類BooksDao和實體類BooksEntity,實現(xiàn)利用BooksDao的selectGoodsOne方法從數(shù)據(jù)庫中檢索出會員想購買的商品,檢索條件為商品編碼,該商品編碼通過頁面請求參數(shù)獲得。<%@pageimport="com.mycompany.dao.BooksDao"%><%@pageimport="com.mycompany.entity.BooksEntity"%>2、頁面添加生成數(shù)據(jù)庫商品信息表操作類BooksDao的對象,調(diào)用selectGoodsOne方法檢索商品信息放入BooksEntity對象goods中。publicActionForwardgoodSelect(ActionMappingmapping,ActionFormform,HttpServletRequestrequest,HttpServletResponseresponse){Listlist=null;list=dao.selectGoods();intpageNumber=list.size();//計算出有多少條記錄intmaxPage=pageNumber;//計算有多少頁數(shù)Stringnumber=request.getParameter("i");if(maxPage%6==0){maxPage=maxPage/6;}else{maxPage=maxPage/6+1;}if(number==null){number="0";}request.setAttribute("number",String.valueOf(number));

request.setAttribute("maxPage",String.valueOf(maxPage));request.setAttribute("pageNumber",String.valueOf(pageNumber));request.setAttribute("list",list);returnmapping.findForward("goodSelect");}(2)、添加商品到購物車編程詳解1、創(chuàng)建cartAdd.jsp,在頁面中引入java實用工具類Vector和代表會員所選商品的臨時實體類GoodsCart,類Vector是java常用的集合類型,用于生成購物車,購物車里商品GoodsCart的實例對象是Vector類實例中的元素,可以利用Vector類的方法方便的實現(xiàn)對購物車進行維護。<%@pageimport="java.util.*"%><%@pageimport="com.mycompany.cart.CartGoods"%>2、頁面添加到購物車的商品信息商品編號和價格是由頁面goodsShowOne.jsp以form表單提交的,使用request對象的getParameter方法獲取。StringgoodsID=(request.getParameter("goodsId"));floatgoodsPrice=Float.parseFloat(request.getParameter("price"));顯示購物車編程詳解創(chuàng)建cartShow.jsp,在頁面中引入java實用工具類Vector和代表會員所選購商品信息的臨時實體類GoodsCart,以及商品信息表操作類BooksDao類,Vector類用于生成對象存放會員的購物車,GoodsCart用于存放遍歷購物車中的商品購買信息,BooksDao類用于獲取商品的其他信息。<%@pageimport="java.util.*"%><%@pageimport="com.mycompany.cart.CartGoods"%><%@pageimport="com.mycompany.dao.BooksDao"%><%BooksDaodao=newBooksDao();%>(4)修改及清空購物車、編程詳解:1、使用session對象的getAttribute方法獲取購物車存入Vector類對象cart中,并生成新購物車newcart:Vectorcart=(Vector)session.getAttribute"cart");Vectornewcart=newVector();2、遍歷購物車cart內(nèi)的商品,每件商品的購買數(shù)量由頁面參數(shù)numX獲得,將所有購買數(shù)量不為0的商品添加到新購物車newcart中:

for(inti=0;i<cart.size();i++){CartGoodscartGoods=(CartGoods)cart.elementAt(i);//取出各件購物車中的商品for(inti=0;i<cart.size();i++){CartGoodscartGoods=(CartGoods)cart.elementAt(i);Stringnum=request.getParameter("num"+i);try{intnewnum=Integer.parseInt(num);cartGoods.number=newnum;if(newnum!=0){newcart.addElement(cartGoods);}3、清空購物車在清空購物車cartClear.jsp頁面上,使用session對象的removeAttribute方法,實際上不僅清除購物車中的商品,也刪除了購物車,會員如果繼續(xù)購物,將會重新生成購物車。session.removeAttribute("cart");response.sendRedirect("cartShow.jsp");書籍名稱數(shù)量價格小計ASF.:amt<155.0055.00刪除總計:55.00修改數(shù)量后點擊確認修改即可<%request.setCharacterEncoding("GBK");Stringisbn[]=request.getParameterValues("ISBN");Stringnum[]=request.getParameterValues("newNum");Mapcart二(Map)session.getAttribute("cart");for(inti=0;i<isbn.length;i++){System.out.println("isbn二"+isbn[i]+"數(shù)量二"+num[i]);if(Integer.parseInt(num[i])>=1){CartItemBeancartItem=(CartItemBean)cart.get(isbn[i]);cartItem.setQuantity(Integer.parseInt(num[i]));cart.put(isbn[i],cartitem);}else{out.println("<scriptlanguage='javascript'>alert('請輸入有效數(shù)!');window.location.href='viewCart.jsp';</script>");return;}}session.setAttribute("cart",cart);response.sendRedirect("viewCart.jsp");%>請確鉞您喲繚篥信懣踽1真實姓名:郵寄地址:地區(qū)郵編:sthuman417725手機號」15575987&03'信用卡號:請確鉞您喲繚篥信懣踽1真實姓名:郵寄地址:地區(qū)郵編:sthuman417725手機號」15575987&03'信用卡號:489148674489此次購實商品:mill此次購買總額:165.0元確認提交后將用戶的訂單信息保存到數(shù)據(jù)庫中前臺會員訂單查詢功能分析:會員在登錄進入網(wǎng)上商城后可以查看自己所有的訂單(包括已經(jīng)出貨和尚未出貨的訂單),既可以單獨查看自己已經(jīng)出貨的訂單,也可以單獨查看自己尚未出貨的訂單;同時還可以對每個訂單進行詳細信息的查詢。用戶在前臺JSP頁面(cartSelect.jsp)可以提交四種請求:1.查看自己的所有訂單。2.在自己所有的訂單中查看已經(jīng)出貨的訂單。在自己所有的訂單中查看尚未出貨的訂單。查看自己某一訂單的詳細信息。E、Servlet的配置1)Servlet的名稱、類和其它選項的配置在web.xml文件中配置Servlet時,首先必須指定Servlet的名稱、Servlet類的路徑,還有選擇性的給Servlet添加描述信息,并且指定在發(fā)布時顯示的名稱和圖標。具體如下:<servlet><servlet-name>orderServlet</servlet-name><servlet-class>com.mycompany.servlet.orderServlet</servlet-class></servlet>vservlet-name>和v/servlet-name>元素之間的內(nèi)容是Servlet的名稱vservlet-class>和</servlet-class>兀素之間的內(nèi)容是Servlet類的路徑。2)初始化參數(shù)Servlet可以配置一些初始化參數(shù),如下代碼:<init-param><param-name>config</param-name><param-value>/WEB-INF/struts-config.xml</param-value></init-param>代碼說明:指定number的參數(shù)值是1000。在servlet中可以通過init()方法體中調(diào)用getInitParameter()方法進行訪問。3)Servlet的映射在web.xml配置文件中可以給一個Servlet做多個映射,因此可以通過不同的方法訪問這個Servlet。<servlet-mapping><servlet-name>orderServlet</servlet-name><url-pattern>/orderServlet</url-pattern></servlet-mapping>代碼說明:指定名稱為OrderServlet的Servlet的映射路徑為/OrderServlet。F、創(chuàng)建Servlet過濾器和實現(xiàn)其編程接口1、建立一個實現(xiàn)Filter接口的類publicclassSessionFilterimplementsFilter所有過濾器都必須實現(xiàn)javax.servlet.Filter。這個接口包含三個方法,分別為doFilter、init和destroy。(1)publicvoiddoFilter(ServletRequestsrequest,ServletResponsesresponse,FilterChainchain)throwsIOException,ServletException{//System.out.println("使用以下方法對請求進行編碼:encoding="+targetEncoding);HttpServletRequestrequest=(HttpServletRequest)srequest;//設(shè)置字符編碼格式request.setCharacterEncoding(targetEncoding);//把處理權(quán)發(fā)送到下一個chain.doFilter(srequest,sresponse);}每當調(diào)用一個過濾器(即,每次請求與此過濾器相關(guān)的servlet或JSP頁面)時,就執(zhí)行其doFilter方法。正是這個方法包含了大部分過濾邏輯。第一個參數(shù)為與傳入請求有關(guān)的ServletRequest。對于簡單的過濾器,大多數(shù)過濾邏輯是基于這個對象的。如果處理HTTP請求,并且需要訪問諸如getHeader或getCookies等在ServletRequest中無法得到的方法,就要把此對象構(gòu)造成HttpServletRequest。doFilter的最后一個參數(shù)為FilterChain對象。對此對象調(diào)用doFilter以激活與servlet或JSP頁面相關(guān)的下一個過濾器。如果沒有另一個相關(guān)的過濾器,則對doFilter的調(diào)用激活servlet或JSP本身。(2publicvoidinit(FilterConfigconfig)throwsServletException{this.filterConfig=config;this.targetEncoding=config.getInitParameter("encoding");}Init()方法只在此過濾器第一次初始化時執(zhí)行,不是每次調(diào)用過濾器都執(zhí)行它。對于簡單的過濾器,可提供此方法的一個空體,但有兩個原因需要使init()方法。首先,FilterConfig對象提供對servlet環(huán)境及web.xml文件中指派的過濾器名的訪問。因此,普遍的辦法是利用init()方法將FilterConfig對象存放在一個字段中,以便doFilter方法能夠訪問Servlet環(huán)境或過濾器名;其次,F(xiàn)ilterConfig對象具有一個getInitParameter方法,它能夠訪問部署描述符文件(web.xml)中分配的過濾器初始化參數(shù)。(3)publicvoiddestroy()大多數(shù)過濾器簡單地為此方法提供一個空體,不過,可利用它來完成諸如關(guān)閉過濾器使用的文件或數(shù)據(jù)庫連接池等清除任務(wù)。2、將過濾行為放入doFilter方法doFilter方法為大多數(shù)過濾器的關(guān)鍵部分。每當調(diào)用一個過濾器時,都要執(zhí)行doFilter。對于大多數(shù)過濾器來說,doFilter執(zhí)行的步驟是基于傳入的信息的。因此,可能要利用作為doFilter的第一個參數(shù)提供的ServletRequest。這個對象常常構(gòu)造為HttpServletRequest類型,以提供對該類的更特殊方法的訪問。3、調(diào)用FilterChain對象的doFilter方法Filter接口的doFilter方法以一個FilterChain對象作為它的第三個參數(shù)。在調(diào)用該對象的doFilter方法時,激活下一個相關(guān)的過濾器。這個過程一般持續(xù)到鏈中最后一個過濾器為止。在最后一個過濾器調(diào)用其FilterChain對象的doFilter方法時,激活Servlet或JSP頁面自身。但是,鏈中的任意過濾器都可以通過不調(diào)用其FilterChain的doFilter方法中斷這個過程。在這樣的情況下,不再調(diào)用JSP頁面的Serlvet,并且中斷此調(diào)用過程的過濾器負責將輸出提供給客戶端。4、Servlet配置中對于過濾器的配置<filter><filter-name>encoding</filter-name><filter-class>com.mycompany.servlet.EncodingFilter</filter-class><init-param><param-name>encoding</param-name><param-value>gb2312</param-value></init-param></filter><filter-mapping><filter-name>encoding</filter-name><url-pattern>/*</url-pattern></filter-mapping><filter><filter-name>SessionFilter</filter-name><filter-class>com.mycompany.servlet.SessionFilter</filter-class><init-param><param-name>logonStrings</param-name><param-value>index.jsp;books.jsp;land_back.jsp;landResult.jsp;userLoginResult.jsp;userRegister.jsp;userRegisterResult.jsp;userPasswordFind1.jsp;userPasswordFind2.jsp;userPasswordFind3.jsp;userPasswordFind4.jsp;OnlineCount.java</param-value></init-param>G、Servlet監(jiān)聽器實現(xiàn)第一步:創(chuàng)建監(jiān)聽器類OnlineCount.java,通過NEW命令創(chuàng)建一個Class文件,準備ServletContextListener、HttpsessionListener接口的監(jiān)聽處理器類,生成代碼如下:publicclassOnlineCountimplementsServletContextListener,HttpSessionListener{publicvoidcontextInitialized(ServletContextEventsce){//應(yīng)用程序初始化時啟動}publicvoidcontextDestroyed(ServletContextEventsce){//應(yīng)用程序卸載時啟動}publicvoidsessionCreated(HttpSessionEventse){//當有用戶訪問時啟動}publicvoidsessionDestroyed(HttpSessionEventse){//當有用戶退出時啟動}}第二步:為監(jiān)聽行為添加代碼:為用戶訪問監(jiān)聽行為添加代碼:publicvoidsessionCreated(HttpSessionEventse){HttpSessionsession=se.getSession();ServletContextcontext=session.getServletContext();Integercounter=(Integer)context.getAttribute("counter");counter=newInteger(Value()+1);//在線人數(shù)增1context.setAttribute("counter",counter);}第二步:為監(jiān)聽行為添加代碼:為用戶退出監(jiān)聽行為添加代碼:publicvoidsessionDestroyed(HttpSessionEventse){HttpSessionsession=se.getSession();ServletContextcontext=session.getServletContext();Integercounter=(Integer)context.getAttribute("counter");counter=newInteger(Value()-1);//在線人數(shù)減1context.setAttribute("counter",counter);}第三步:將session監(jiān)聽器配置到web.xml配置文件中:((2)<listener><listener-class>com.mycompany.servlet.OnlineCount</listener-class></listener>???第四步:顯示在線用戶的監(jiān)聽結(jié)果在需要顯示的JSP頁面frameTopt.jsp中加入如下代碼:<td><fontcolor="orange">  在線人數(shù)<%if(application.getAttribute("counter")!=null){%>  <%=application.getAttribute("counter")%><%}else{%>  1<%}%></font></td>后臺管理后臺管理用了struts技術(shù)(1)廠、單擊“后臺管理員”調(diào)用DAO廠、單擊“后臺管理員”調(diào)用DAO查詢數(shù)據(jù)庫+進入查詢頁面r,遍歷查詢結(jié)果集+分貞顯示一結(jié)果集空?-<2)結(jié)束編程詳解:在頁面index_back?jsp單擊超級鏈接''后臺管理員”<ahref=“managerAction.do?action=1”class=“a3”>后臺管理員</a>參數(shù)action=1調(diào)用ManagerAction中的ManagerSelect方法查詢所有管理員編程詳解:1、單擊超級鏈接“會員管理”<ahref=“memberAction.do?action=2”class=“a3”>2、MemberAction調(diào)用MemberDAO的selectMember方法獲得所有會員信息3、跳轉(zhuǎn)到頁面selectMember?jsp,顯示所有會員信息。4、在selectMember?jsp頁面單擊“詳細信息”鏈接。<ahref=“memberAction?do?action=3&id=<%=form?getId()%>”>詳細信息</a>5>MemberAction調(diào)用MemberDAO的selectOneMember方法獲得當前會員的詳細信息。6、調(diào)轉(zhuǎn)到selectMember.jsp頁面顯示當前會員的詳細信息。

在頁面ind怠gdU即單擊超級鏈接“后臺管理員"<atugf=“manag念朋伽止述血二「class=lla3,1>后臺管理員v/a二參數(shù)action二1調(diào)用ManagWGtion中的Rfenag蝕SateQt方法查詢所有管理員數(shù)據(jù)編尋管理員用戶名管理魚姓名按it16managermanager刪除15sa刪除it+tifJTIt若Mm討斗詰掃弟iT!T4一而卞一市濟hn警飄M編程詳解:在頁面index_back.jsp單擊超級鏈接“后臺管理員”<ahref二“managerAction?do?action=l”class二“a3”>后臺管理員</a>參數(shù)action=1調(diào)用ManagerAction中的ManagerSelect方法查詢所有管理員從數(shù)據(jù)庫中提取管理員的相關(guān)信息,點擊添加管理員可以跳轉(zhuǎn)到ManagerInsert?jsp頁面,添加管理員,點擊刪除就可以刪除相應(yīng)的管理員。管理員查詢http://localhost8080/E-Store/managerlnsert.jsp(4)密碼修改:管理員查詢http://localhost8080/E-Store/managerlnsert.jsp點擊“修改您的密碼”鏈接就跳轉(zhuǎn)ManagerUpdatePassword.jsp頁面5)訂單管理:訂單的查詢編號真實姓名5丕屮住疋白UJJQ訂貨時間操作1236388710183張三是2009-03-0709:19:00.0詳細信息已出刪除1236388710184訂單的查詢編號真實姓名5丕屮住疋白UJJQ訂貨時間操作1236388710183張三是2009-03-0709:19:00.0詳細信息已出刪除1236388710184龔云是2009-03-0709:19:00.0詳細信息已出刪除1236388710185彭志是2009-03-0709:19:00.0詳細信息已出刪除1249703610687王歡是2009-08-0811:54:00.0詳細信息已出刪除:tt治1而It右d莖沖尋當箭治埜1而I-一而用戶賬號zhang用戶姓名張三送貨電話155T598T603送貨地址湖南付款方式郵政忖款運送方式特快專遞備注信息hao訂貨時間2009-03-0709:19:00.0訂單?A:"2363?ti7U1183的詳細信息商品詳細信息商品名稱商品數(shù)星商品價格null189.匸1元總金額:89.Q從數(shù)據(jù)庫中提取訂單的相關(guān)信息/點擊操作欄/£的詳細信息/就可以查詢相應(yīng)訂單的詳細處理點擊刪除就可以刪除對應(yīng)的訂單口返回已經(jīng)發(fā)貨返回編程詳解:從數(shù)據(jù)庫中提取訂單的相關(guān)信息,點擊操作欄中的詳細信息就可以查詢相應(yīng)訂單的詳細信息。點擊刪除就可以刪除對應(yīng)的訂單。由OrderServlet處理6)商品查詢:編程詳解:1?點擊index?jsp的査詢鏈接由BigTypeAction處理調(diào)用DAO包査詢數(shù)據(jù)庫,進入查詢頁面中,點擊“添加大類別”可以進入BigTypelnsert?jsp頁面添加大類別。2?創(chuàng)建模型組件BookBean?java為了避免產(chǎn)生路徑錯誤,建議使用配置向?qū)нM行struts配置3?創(chuàng)建控制器組件TitleBean?java(Control)GetTitles()方法publicListgetTitles(){ListtitlesList=newArrayList();Stringsql="SELECT*fromtitlesORDERBYgoodsName";//獲取書籍列表try{connection=ConnectionManager.getConnction();titlesQuery=connection.prepareStatement(sql);ResultSetresults=titlesQuery.executeQuery();//讀取行數(shù)據(jù)while(results.next()){BookBeanbook=newBookBean();book.setId(results.getString("id"));book.setGoodsName(results.getString("goodsName"));book.setBigId(results.getInt("bigId"));book.setSmallId(results.getInt("smallId"));book.setImageFile(results.getString("imageFile"));book.setOriginalPrice(results.getFloat(book.setOriginalPrice(results.getFloat("originalPrice"));book.setCurrentPrice(results.getFloat("currentPrice"));book.setIntroduce(results.getString("introduce"));book.setCreateTime(results.getString("createTime"));book.setDiscount(results.getInt("discount"));book.setNumber(results.getInt("number"));titlesList.add(book);}}為了實現(xiàn)分頁,需要獲得記錄總數(shù),總頁數(shù),當前頁數(shù),結(jié)果集對象列表等信息。<%TitlesBeantitlesBean=newTitlesBean();//調(diào)用訪問數(shù)據(jù)庫的方法,返回所有書籍的信息列表Listtitles=titlesBean.getTitles();BookBeancurrentBook;//storetitlesinsessionforfurtheruse//將書籍列表放入會話中,名稱為titlessession.setAttribute("titles",titles);intpageNumber=titles.size();//計算出有多少條記錄intmaxPage=pageNumber;//計算有多少頁數(shù)StringstrNumber=request.getParameter("pageNum");intnumber=0;if(maxPage%9==0){//每頁顯示九個maxPage=maxPage/9;}else{maxPage=maxPage/9+1;}if(strNumber==null){number=0;}else{number=Integer.parseInt(strNumber);}intstart=number*9;//開始條數(shù)intover=(number+1)*9;//結(jié)束條數(shù)intcount=pageNumber-over;//還剩多少條記錄if(count<=0){over=pageNumber;}%>點擊圖片或書名鏈接:<ahref="displayBook.jsp?id=<%=currentBook.getId()%>">    <%=%></a>%>"><IMG%></a>%>"><IMGsrc="/EStore/images/(7)商品添加功能<%=currentBook.getImageFile()border=0></%>"width=90subStr(currentBook.getGoodsName()+","+currentBook.getOriginalPrice())href="displayBook.jsp?id=<%=currentBook.getId()height=110編程詳解:publicActionForwardsaveGoods(ActionMappingmapping,ActionFormform,HttpServletRequestrequest,HttpServletResponseresponse)throwsException{UploadFileuploadFile=newUploadFile();GoodsFormgoodsForm=(GoodsForm)form;Stringdir=servlet.getServletContext().getRealPath("/images");FormFileformFile=goodsForm.getFormFile();StringgetType=formFile.getFileName().substring(formFile.getFileName().lastIndexOf(".")+1);Stringresult="添加商品信息失敗";StringimageType[]={"JPG","jpg","gif","bmp","BMP"};for(intii=0;ii<imageType.length;ii++){if(imageType[ii].equals(getType)){goodsForm.setBigId(Integer.valueOf(request.getParameter("bigId")));goodsForm.setSmallId(Integer.valueOf(request.getParameter("smallId")));goodsForm.setGoodsName(request.getParameter("goodsName"));goodsForm.setOriginalPrice(Float.valueOf(request.getParameter("originalPrice")));goodsForm.setCurrentPrice(Float.valueOf(request.getParameter("currentPrice")));goodsForm.setIntroduce(request.getParameter("introduce"));goodsForm.setImageFile("images/"+uploadFi

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論