![訂餐系統(tǒng)javaee課程設(shè)計(jì)報(bào)告_第1頁](http://file4.renrendoc.com/view/9a43cfef66096747547b9195d55e2280/9a43cfef66096747547b9195d55e22801.gif)
![訂餐系統(tǒng)javaee課程設(shè)計(jì)報(bào)告_第2頁](http://file4.renrendoc.com/view/9a43cfef66096747547b9195d55e2280/9a43cfef66096747547b9195d55e22802.gif)
![訂餐系統(tǒng)javaee課程設(shè)計(jì)報(bào)告_第3頁](http://file4.renrendoc.com/view/9a43cfef66096747547b9195d55e2280/9a43cfef66096747547b9195d55e22803.gif)
![訂餐系統(tǒng)javaee課程設(shè)計(jì)報(bào)告_第4頁](http://file4.renrendoc.com/view/9a43cfef66096747547b9195d55e2280/9a43cfef66096747547b9195d55e22804.gif)
![訂餐系統(tǒng)javaee課程設(shè)計(jì)報(bào)告_第5頁](http://file4.renrendoc.com/view/9a43cfef66096747547b9195d55e2280/9a43cfef66096747547b9195d55e22805.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
..網(wǎng)上訂餐系統(tǒng)課程設(shè)計(jì)的目的當(dāng)計(jì)算機(jī)與互聯(lián)網(wǎng)飛速的開展和使用,越來越多的公司、單位和個(gè)人通過提供效勞、公布信息、交流知識(shí)等使互聯(lián)網(wǎng)越來越方便我們的生活。在Web開發(fā)中,Java語言以其可擴(kuò)展性、靈活性、可靠性和跨平臺(tái)等特點(diǎn),成為進(jìn)展web編程的首選。更重要的是,開源社區(qū)提供了一大批功能強(qiáng)大的框架技術(shù),Structs、Spring、Hibernate等,利用這些技術(shù)使我們更高效的維護(hù)和建立我們自己的同時(shí)也讓的開發(fā)更加方便和快捷。在這學(xué)期課堂上所學(xué)到的Java知識(shí),能夠?yàn)槲覀兘鉀Q一些實(shí)際問題的能力。利用一周時(shí)間,使用Java框架技術(shù)完成網(wǎng)上訂餐系統(tǒng)的分析設(shè)計(jì)和開發(fā)。有了網(wǎng)上訂餐系統(tǒng),人們可以在家隨意挑選自己喜愛的食物?,F(xiàn)在正是經(jīng)濟(jì)全球化的時(shí)代,利用網(wǎng)絡(luò),我們可以瀏覽不同地區(qū)甚至不同國家的商品,這也改變著人們的消費(fèi)觀,網(wǎng)上訂餐系統(tǒng)正是符合了這一趨勢的開展,越來越多的人能夠不出門就能吃上美味可口的飯菜。2.設(shè)計(jì)方案論證2.1需求分析隨著科技的進(jìn)步、計(jì)算機(jī)技術(shù)的開展,越來越多的人選擇用網(wǎng)絡(luò)來滿足自己的需求,網(wǎng)上訂餐的出現(xiàn),正是表達(dá)了這一點(diǎn)。不少商家都把眼觀放在了網(wǎng)上銷售這一方面,把實(shí)體銷售漸漸轉(zhuǎn)變?yōu)榫W(wǎng)上銷售?,F(xiàn)在人們越來越重視節(jié)省時(shí)間,提高效率,不管是消費(fèi)者還是商家都如此,有了網(wǎng)上訂餐系統(tǒng),可以讓訂餐者與餐廳進(jìn)展互動(dòng),足不出戶,選擇自己喜愛的菜品,對(duì)與商家而言,這樣做節(jié)省了本錢,不需要為實(shí)體店的地址而煩惱,這樣做對(duì)于商家和消費(fèi)者來說無疑是雙贏的。2.2系統(tǒng)總體設(shè)計(jì)本系統(tǒng)為了便于各種操作,采用多頁面的模式。用戶可在不同網(wǎng)頁進(jìn)展相應(yīng)操作:=1\*GB2⑴在管理員信息表中,包括的數(shù)據(jù)項(xiàng):,密碼,權(quán)限,注冊時(shí)間。=2\*GB2⑵在訂餐客戶信息表中,包括的數(shù)據(jù)項(xiàng):用戶編號(hào),用戶名,密碼,,,,注冊時(shí)間等。=3\*GB2⑶在菜品信息表中,包括的數(shù)據(jù)項(xiàng):菜品編號(hào),菜品名稱,菜品價(jià)格,容,類別,添加時(shí)間等,每道菜都有它的菜名、介紹、價(jià)格等信息,為了讓菜品的這些信息在頁面有個(gè)很好的呈現(xiàn),我們把這些信息存入菜品信息表中進(jìn)展維護(hù)。。=4\*GB2⑷在定單列表中,包括的數(shù)據(jù)項(xiàng):定單列表編號(hào),用戶名,菜品編號(hào),下單時(shí)間等。=5\*GB2⑸在購物車信息,包括的數(shù)據(jù)項(xiàng):購物車信息唯一標(biāo)識(shí),食品id,訂餐用戶名,添加時(shí)間等。當(dāng)顧客選購菜品放入購物車時(shí),我們會(huì)把這些菜品的id、數(shù)量、價(jià)格記錄存入訂單關(guān)聯(lián)表中,通過訂單關(guān)聯(lián)表中的信息算出會(huì)員將要支付的金額,再通過菜品id這個(gè)主健把相應(yīng)的信息存入個(gè)人訂單這表中進(jìn)展維護(hù)。=6\*GB2⑹為了有效地管理菜品,在新增菜品時(shí)加了一個(gè)分類屬性,在此需要建分類表進(jìn)展維護(hù),系統(tǒng)總體功能圖如圖1所示。后臺(tái)后臺(tái)菜肴價(jià)目信息發(fā)布餐廳銷售統(tǒng)計(jì)用戶留言及售后效勞前臺(tái)用戶管理菜單瀏覽訂單管理用戶反應(yīng)網(wǎng)上訂餐系統(tǒng)圖1系統(tǒng)功能框圖2.3系統(tǒng)流程設(shè)計(jì)課程設(shè)計(jì)信息管理系統(tǒng),包括用戶注冊、管理員登錄、菜品查詢、菜品詳單等。任務(wù)執(zhí)行的流程如圖2所示。進(jìn)入系統(tǒng)主界面進(jìn)入系統(tǒng)主界面管理員登錄瀏覽頁面用戶注冊用戶登錄管理員登錄瀏覽頁面用戶注冊用戶登錄菜品搜索選購菜品搜索選購商品用戶注冊數(shù)據(jù)庫數(shù)據(jù)庫用戶注冊數(shù)據(jù)庫數(shù)據(jù)庫操作操作頁面參加購物車訂單查詢參加購物車訂單查詢后臺(tái)管理后臺(tái)管理系統(tǒng)公告系統(tǒng)公告結(jié)賬結(jié)賬注銷登錄注銷登錄圖2系統(tǒng)流程圖2.4數(shù)據(jù)庫設(shè)計(jì)該系統(tǒng)是借助MySQL數(shù)據(jù)庫對(duì)數(shù)據(jù)進(jìn)展統(tǒng)一管理的。在網(wǎng)上訂餐系統(tǒng)中需MySQL創(chuàng)立數(shù)據(jù)庫"訂餐管理系統(tǒng)〞,MySQL數(shù)據(jù)庫中數(shù)據(jù)的操作可以分為四種不同的類型,分別是添加、刪除、查詢和修改。該數(shù)據(jù)庫包含的表有菜品信息表、管理員表、訂單表等。2.4.1菜品信息表菜品信息表,記錄系統(tǒng)中的菜品信息。把漢字轉(zhuǎn)化為漢語拼音,作為字段名。把ID設(shè)為主鍵,且不為空,bianhao、mingcheng、leibie、tupian、jianjie、jiage、faburen、addtime與之相關(guān)聯(lián),如表1所示。表1菜品信息表字段名類型長度是否為主鍵是否為空說明idint11是否菜品編號(hào)bianhaovarchar20否是菜品編碼mingchengvarchar50否是菜品名稱leibievarchar20否是菜品類別tupianvarchar50否是菜品圖片jianjievarchar50否是菜品簡介faburenvarchar30否是發(fā)布人2.4.2管理員信息表管理員信息表,存儲(chǔ)系統(tǒng)中的管理員信息。把漢字轉(zhuǎn)化為漢語拼音,作為字段名。其中,ID設(shè)置為int型,并設(shè)為主鍵,且不能為空;username、pwd設(shè)置為varchar型,如表2所示。表2管理員信息表字段名類型長度是否為主鍵是否為空說明IdInt10是否用戶編號(hào)usernameVarchar30否是用戶PwdVarchar30否是用戶密碼2.4.3用戶注冊信息表用戶注冊信息表,記錄系統(tǒng)中的注冊用戶信息。把漢字轉(zhuǎn)化為漢語拼音,作為字段名。把ID設(shè)為主鍵,且不為空,zhanghao、mima、ximgming、diqu、zhaopian、issh與之相關(guān)聯(lián)。表3用戶注冊信息表字段名類型長度是否為主鍵是否為空說明idint11是否編號(hào)Zhanghaovarchar30否是賬號(hào)mimavarchar20否是密碼Xingmingvarchar30否是Diquvarchar50否是地區(qū)Zhaopianvarchar50否是照片Isshvarchar10否是備注2.5主要功能用struts框架中的異常處理機(jī)制,本系統(tǒng)自定義了異常類SystemException和異常處理類SystemExceptionHandler。在MessageRperties中定義需要在Dao中拋出異常時(shí)聲明的容。在struts-config.xml中配置公共異常處理文件<global-exceptions>,參加資源文件<message-resourcesparameter="MessageResources"/>在Dao中拋出自定義異常。并在公共異常處理頁面中使用struts標(biāo)簽<html:errors/>進(jìn)展異常信息顯示。顧客模塊為封裝的異常跳轉(zhuǎn)頁面如下列圖3所示:圖3在struts-config.xml文件中的配置信息如下:<global-exceptions> <exceptionkey="errors.detail" type=".hhq.util.SystemException" handler=".hhq.util.SystemExceptionHandler" path="/jsp/clientError.jsp"/></global-exceptions>在配置文件中可見,異常是以鍵值對(duì)的方式在struts1.1中存放,type屬性是指異常類,handler屬性是指異常的處理類,path屬性是指出現(xiàn)異常后跳轉(zhuǎn)的錯(cuò)誤頁面。3.設(shè)計(jì)結(jié)果與分析3.1訂餐系統(tǒng)登錄界面設(shè)計(jì)該系統(tǒng)通過輸入用戶名和密碼進(jìn)展登錄,登錄界面如圖4所示。圖4登錄界面功能描述:顧客登陸管理,包括登陸時(shí)管理員需要輸入用戶名、密碼、驗(yàn)證碼、也可已選擇是否記錄用戶名和密碼以便以后登錄。如果管理員選擇記住用戶名和密碼那么下一次登陸的時(shí)候只需要輸入驗(yàn)證碼,即可直接登錄。登錄頁面控制模塊Login相關(guān)代碼如下:login.jsp:<%pagelanguage="java" import="java.util.*,.actions.*" pageEncoding="gbk"%><%Stringpath=request.getContextPath(); StringbasePath=request.getScheme()+"://" +request.getServerName()+":"+request.getServerPort() +path+"/";%><%taglibprefix="s"uri="/struts-tags"%><!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"><html> <head> <title>登錄頁面</title> <styletype="text/css"></style>/head> <body> <divalign="center"><br><spanclass="STYLE2">訂餐系統(tǒng)</span></div><divalign="center"> <s:formaction="login"><s:textfieldname="userName"label="用戶名"value=""></s:textfield> <s:passwordname="password"label="密碼"value=""></s:password> <divalign="center"> <s:submitvalue="登錄"/> <s:propertyvalue="resultMSG"/></div></s:form> </div> </body></html>publicclassALogin{publicvoiddoLogin(HashtableinputData,HashtableoutputData,SessionmySession)throwsException{//獲取輸入信息StringsUsername=(String)inputData.get("username");StringsPassword=(String)inputData.get("password");//校驗(yàn)用戶輸入信息LUserlUser=(LUser)GlobalObjectProvider.getLogicService(monConst.LOGIC_KEY_USER);//如果對(duì)應(yīng)的類沒有的話,報(bào)錯(cuò)并返回login頁面if(lUser==null){thrownewException("用戶名或密碼錯(cuò)誤請(qǐng)重新輸入!");}//獲取用戶信息UseruserInfo=lUser.getUserInfo(sUsername,sPassword);if(userInfo==null){outputData.put("pageId",monConst.VIEWID_LOGIN);outputData.put("errMsg","用戶名密碼檢查失敗!請(qǐng)重新輸入。");outputData.put("username",sUsername);return;}Else{outputData.put("pageId",monConst.VIEWID_MENU);//往session中設(shè)置用戶信息mySession.setAttribute("loginUser",userInfo);return;}}}3.2訂餐系統(tǒng)主頁面模塊設(shè)計(jì)用戶可以通過訂餐系統(tǒng)主頁面進(jìn)展訂餐如圖5所示。圖5功能描述:顧客登陸管理,包括登陸時(shí)可以以游客或者會(huì)員的兩種方式進(jìn)展訂餐操作,如果是會(huì)員登陸,先前需要錄入用戶名、密碼、驗(yàn)證碼,以便系統(tǒng)確認(rèn)登陸成功。會(huì)員個(gè)人信息管理,會(huì)員可以修改個(gè)人資料〔如:,地址等〕,也可以查看訂餐信息,了解當(dāng)前訂餐的動(dòng)態(tài)〔詳見會(huì)員登錄流程圖〕。選購美食,作為顧客,在挑選美食的過程中,可以直接將滿意的美食選進(jìn)購物車中也可通過一系列查詢,進(jìn)一步了解后,再選擇美食〔詳見選購美食流程圖〕。選購美食局部代碼如下:……//得到在Spring中動(dòng)態(tài)注入的Service層對(duì)象……//得到日志對(duì)象logpublicActionForwardqueryForAll(ActionMappingmapping,ActionFormform, ServletRequestrequest,ServletResponseresponse){ Stringforward="first"; if(request.getParameter("user").equals("manager")){ forward="queryDishes"; } Foodfood=newFood(); List<Food>foodList=null; List<Food>topList=null; intallRecorders=foodService.queryForAllRecorders(food); //當(dāng)不是第一次登陸頁面時(shí) if(request.getParameter("cp")!=null&&request.getParameter("ls")!=null){ int currentPage=Integer.parseInt(request.getParameter("cp")); intlineSize=Integer.parseInt(request.getParameter("ls")); if(currentPage>1&&lineSize>allRecorders){ currentPage=1; } food.setCurrentPage(currentPage); food.setLineSize(lineSize); foodList=foodService.queryForFood(food); }else{ //第一次來到頁面,top5和食品圖片等信息 foodList=foodService.queryForFood(); } intpageSize=(allRecorders+food.getLineSize()-1)/food.getLineSize(); request.setAttribute("pageSize",pageSize); request.setAttribute("allRecorders",allRecorders); topList=foodService.queryForTop(); //下拉列表中的信息 List<FoodAttribute>foodAttributeList=foodService.querySelectInfo(); //傳給top10的list request.setAttribute("topList",topList); //傳給視頻圖片等信息的list request.setAttribute("foodList",foodList); //傳給下拉列表的list request.setAttribute("foodAttributeList",foodAttributeList); returnmapping.findForward(forward); }首先判斷是從哪個(gè)頁面跳到到這里來調(diào)用這一方法,隨著調(diào)用者的不同,方法也會(huì)將最后的傳輸?shù)讲煌捻撁嬷腥ァH缓蟛樵兂鏊忻朗车挠涗洈?shù),再對(duì)是否是第一次登錄到此頁面進(jìn)展判斷,以為,第一次登錄時(shí)當(dāng)前頁數(shù)和每頁顯示行數(shù)是默認(rèn)的,而此后登錄到此頁面時(shí)有可能發(fā)生改變,最后再用Spring中動(dòng)態(tài)注入的效勞層中食品類的對(duì)象調(diào)用查詢食品信息的方法,再將結(jié)果通過request對(duì)象傳輸?shù)綄?duì)應(yīng)的頁面中去。publicStringgetFoodInfo(Stringsrc){ //圖片絕對(duì)路徑 Stringpicsrc=null; StringfoodInfo=null; //只保存相對(duì)路徑,將絕對(duì)路徑去掉 Stringtemp[]=src.split("/"); for(inti=0;i<temp.length;i++){ //得到圖片的相對(duì)路徑 picsrc=temp[temp.length-1]; } Foodfd=foodDAO.query(picsrc); foodInfo=fd.getFoodDescription(); returnfoodInfo; }此方法要在jsp頁面中有DWR的對(duì)象調(diào)用,其中得到的路徑是圖片在效勞器上的絕對(duì)路徑,首先用String類中的split方法將其截成數(shù)據(jù)庫中所存入得圖片路徑形式,然后再作為查詢條件在數(shù)據(jù)庫中查詢,查詢出美食的信息。然后DWR對(duì)象會(huì)將查詢出來的信息作為jsp頁面中回調(diào)函數(shù)的參數(shù)傳回頁面端。3.3美食信息添加功能模塊功能描述:對(duì)菜品信息進(jìn)展維護(hù),包括:=1\*GB2⑴添加菜品,添加菜品圖品,價(jià)格,是否是推薦菜品等。=2\*GB2⑵菜品過季下架,用于菜品原料缺少或菜品過季等情況,進(jìn)展邏輯刪除。=3\*GB2⑶菜品的查詢,可以按菜品的名稱、價(jià)格、銷售量、是否是推薦菜品進(jìn)展查詢,默認(rèn)是推薦菜品查詢。=4\*GB2⑷修改維護(hù)菜品信息,主要針對(duì)菜品原料的價(jià)格更變菜品的價(jià)格及菜品是打折時(shí)的價(jià)格更變,如圖6所示。圖6美食添加中圖片上傳功能代碼如下:/**圖片上傳**/ ……//定義局部變量try{ IPTimeStampits=newIPTimeStamp(request.getRemoteAddr()); //自動(dòng)為上傳圖片命名,以確定圖片的唯一性,以防覆蓋 foodPictureAddr=its.getIPTimeStampRand()+"."+its.getLastName(file.getFileName()); stream=file.getInputStream(); filePath=this.getServlet().getServletContext().getRealPath("/images/food")+"/"+foodPictureAddr; bos=newFileOutputStream(filePath); intbytesRead=0; byte[]buffer=newbyte[8192]; while((bytesRead=stream.read(buffer,0,8192))!=-1){ bos.write(buffer,0,bytesRead); } }catch(Exceptione){ e.printStackTrace(); }finally{ try{ bos.close(); stream.close(); }catch(IOExceptione){ e.printStackTrace(); }catch(Exceptione){} } file.destroy(); /**圖片上傳完畢**/首先,有系統(tǒng)自動(dòng)未上傳圖片命名,防止覆蓋,然后通過字符串拼接的方式作為圖片的地址存入數(shù)據(jù)庫〔例如:圖片名稱叫aaa,擴(kuò)展名為jpg,在存入數(shù)據(jù)庫中的地址就是相對(duì)地址系統(tǒng)自動(dòng)生成的名字.jpg〕,在通過輸入輸出流的方式將圖片上傳到效勞器上。即由從form中得到的圖片路徑以流的方式效勞器上的一本系統(tǒng)自動(dòng)并命好的文件上,最后關(guān)閉輸入流和輸入流,并將文件損毀。另附圖片自動(dòng)命名類的局部代碼如下//為了得到不重復(fù)的圖片名稱〔首先用數(shù)字零給本機(jī)IP地址的點(diǎn)補(bǔ)位,然后再加上當(dāng)前時(shí)間〔準(zhǔn)確到毫秒〕,最后再加上三個(gè)隨機(jī)數(shù)〕……//定義局部變量publicStringgetIPTimeStampRand(){ StringBufferbuf=newStringBuffer(); if(ip!=null){ Stringstr[]=this.ip.split("\\."); for(inti=0;i<str.length;i++){ buf.append(this.addZero(str[i],3)); } } buf.append(this.getTimeStamp()); Randomrand=newRandom(); for(inti=0;i<3;i++){ buf.append(rand.nextInt(10)); } returnbuf.toString(); }ip已經(jīng)在實(shí)例化自動(dòng)命名類對(duì)象是賦值,即是本機(jī)的ip地址,將ip地址通過".〞字符來分開有字符串?dāng)?shù)組接收,再將每局部未滿三位的進(jìn)展補(bǔ)零操作,再加上時(shí)間戳,最后加上三位隨機(jī)數(shù),再將StringBuffer轉(zhuǎn)換成String對(duì)象最后得到的容既是系統(tǒng)為圖片自動(dòng)賦好的名字。另附美食類別處理代碼如下:if((!attributeId.trim().equals("0"))&&!(attributeId.trim().equals(""))){ food.setFoodTypeId(attributeId);}else{ //新類別 foodAttributeValue=foodService.queryFoodAttributeId(); foodAttributeId=foodAttributeValue.getAttributeId(); try{ //調(diào)用bean中的changeAttributeId方法將foodAttributeId轉(zhuǎn)換成foodattribute表中的格式 attributeid=foodAttributeValue.changeAttributeId(foodAttributeId); }catch(Exceptione){ //超過3位,提示減少不必要的食品類型,或者聯(lián)系hhq e.printStackTrace(); log.error("系統(tǒng)添加食品類別信息過多!",e); thrownewSystemException("foodattributelargenum.error",e); } foodattribute=newFoodAttribute(); foodattribute.setAttributeId(attributeid); foodattribute.setAttributeName(newAttributeName); //將新類別向?qū)傩员碇胁逯? try{ isAdd=foodService.addFoodAttribute(foodattribute); }catch(Exceptione){ e.printStackTrace(); log.error("系統(tǒng)添加食品類別信息時(shí)錯(cuò)誤!",e); thrownewSystemException("foodattributeadd.error",e); } if(isAdd==true){ food.setFoodTypeId(attributeid); } }基于美食的類別操作的可添加性,那么需要判斷是在文本框中填寫的美食容〔即:新類別〕,還是在下拉菜單中選擇的容〔即:老類別〕,如果是老類別那么可以利用原有的類別編號(hào)直接填入數(shù)據(jù)庫中。而如果是新類別那么需要生成新的類別編號(hào),再將類別編號(hào)填入到數(shù)據(jù)庫中。3.4訂單查詢功能描述:對(duì)顧客的購物車所下的訂單進(jìn)展管理,包括:=1\*GB2⑴查看訂單,可按訂單號(hào)、用戶進(jìn)展查詢管理員可以查看到當(dāng)前餐廳的訂單,并可以進(jìn)展打印訂單以確認(rèn)發(fā)貨。=2\*GB2⑵修改訂單,管理員對(duì)不在自己店圍的訂單可進(jìn)展手動(dòng)或者可以在訂單狀態(tài)為等待中時(shí)為顧客修改菜品的數(shù)量及品種,假設(shè)訂單狀態(tài)為以下單那么不能為顧客修改。=3\*GB2⑶打印訂單,假設(shè)打印訂單表示以確認(rèn)發(fā)貨,并自動(dòng)修改訂單狀態(tài)為已發(fā)送。=4\*GB2⑷取消訂單,假設(shè)顧客不方便上網(wǎng)打要取消訂餐的話,管理員查看訂單狀態(tài)假設(shè)為已下單那么不能為顧客取消訂單,假設(shè)訂單狀態(tài)在等待中,那么可以為顧客取消訂單,如圖7所示。圖7訂單信息查詢頁面查詢訂單局部代碼如下:<selectid="getOrderBySAndUsBefore"parameterClass=".hhq.domain.Order"resultClass=".hhq.domain.Order"> SELECTtemp.*FROM( selecto.orderidasorderId, to_char(o.ordertime,'yyyy-MM-ddHH24:mi:ss')asorderTime, o.receivernameasreceiverName, o.receiveraddrasreceiverAddr, o.receivertelasreceiverTel, o.orderallpriceasorderAllPrice, a.attributenameasorderStatus, o.nodesasnodes, rownumasrn fromordertableo,attributetablea whereo.orderstatusid=a.attributeidando.orderstatusidnotin('06001','06002')and o.memberusernamelike#memberUserName#and<![CDATA[rownum<=#currentPage#*#pageSize#]]> )tempWHERE <![CDATA[temp.rn>(#currentPage#-1)*#pageSize#]]></select>由于iBatis框架多持久層進(jìn)展封裝,所以SQL語句在寫法上會(huì)有些不同,針對(duì)物理分頁這一要求,采用由rownum來控制輸出的列數(shù),在查詢結(jié)果上,也用到了oracle自己的函數(shù)to-char來對(duì)日期類型進(jìn)展處理。其中,在select標(biāo)簽中,id屬性對(duì)應(yīng)在DAO的實(shí)現(xiàn)類中對(duì)象smctemplate所調(diào)用的queryForList方法的第一個(gè)參數(shù),借此找到此SQL,來進(jìn)展查詢操作。resultClass與parameterClass分別表示,結(jié)果類的類型和參數(shù)類的類型,其中還有標(biāo)簽<![CDATA]>是iBatis中使用rownum來進(jìn)展分頁操作所必須應(yīng)用到的。而如果在頁面上點(diǎn)擊"查看訂單詳情〞那么會(huì)彈出一個(gè)模態(tài)對(duì)話框,該對(duì)話框由兩局部組成,上半局部是美食的信息,有美食名稱、美食份數(shù)、美食單價(jià)、美食總價(jià)四個(gè)屬性,而其中有"沿著此處剪開〞的字樣,下半局部那么是顧客的信息有訂單號(hào)、訂單狀態(tài)、收貨人、地址、聯(lián)系、總價(jià)、支付方式、訂單時(shí)間、備注信息幾項(xiàng)組成。4.設(shè)計(jì)體會(huì)經(jīng)過一段時(shí)間的設(shè)計(jì)和開發(fā),網(wǎng)上訂餐系統(tǒng)根本開發(fā)完畢。其功能根本符合群眾需求,能夠完成菜肴的更新,菜肴的查詢,菜肴的下單,后臺(tái)的管理等各種功能但是由于課程設(shè)計(jì)時(shí)間較短和本人水平所限,雖然教師給予了我很多的指導(dǎo),但是該系統(tǒng)還有許多不盡如人意的地方,對(duì)于Java的框架技術(shù)我還需要深入的進(jìn)展學(xué)習(xí)。如今信息化的普及,要想使該系統(tǒng)能在海量的網(wǎng)上訂餐系統(tǒng)中脫穎而出,以我們的編寫能力,及我們對(duì)需求的分析和了解以及業(yè)務(wù)上的熟練程度都顯得遠(yuǎn)遠(yuǎn)的不夠。還有一些后續(xù)工作需要完成,下一步的改良一定做到層次更清晰,功能劃分更明確,以實(shí)現(xiàn)更好的擴(kuò)展性和重用性。5.參考文獻(xiàn)[1]嚴(yán)璋鵬.基于B-S的學(xué)生學(xué)籍管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].價(jià)值工程.2013.19:33-41[2]剛.輕量級(jí)J2EE企業(yè)應(yīng)用實(shí)戰(zhàn)—Struts+Spring+Hibernate整合開發(fā)[M].:電子工業(yè),2011.3:46-75[3]賈素玲,王強(qiáng).JSP應(yīng)用開發(fā)技術(shù)[M].:清華大學(xué),2011.7:35-76[4]王海濤,賈宗璞.基于Struts和Hibernate的Web應(yīng)用開發(fā)[J].計(jì)算機(jī)工程,2011,37(9):113.[5]應(yīng)逵.JavaWeb數(shù)據(jù)庫系統(tǒng)應(yīng)用開發(fā)與實(shí)例M].:人民郵電,2009.9:102-134.[6]胡濤濤.基于MVC模式的課程管理系統(tǒng)的功能設(shè)計(jì)[J].煤炭管理干部學(xué)院學(xué)報(bào),2013,04:140-142.[7]任廣財(cái).基于JSP的高校學(xué)生工作管理系統(tǒng)的設(shè)計(jì)與開發(fā)[J].科技經(jīng)濟(jì)市場,2013,12:119-120.[8]施陽,海燕,戴德偉.基于JavaEE的畢業(yè)設(shè)計(jì)管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].軟件導(dǎo)刊,2015,02:86-88.[9]春生.淺談JavaEE程序設(shè)計(jì)課程教學(xué)改革[J].科教誨刊(中旬刊),2014,08:119-120.[10]曉華,健,周慧貞.JSP應(yīng)用開發(fā)詳解(第三版)[M].:電子工業(yè),2007.16.附錄:publicclassmonServletextendsServlet{//保存各頁面Id對(duì)應(yīng)的action類的對(duì)象privateHashtablehPageHandler=newHashtable();//配置文件的存放位置privateJXPathContextconfigContext=null;publicvoidinit(){//取得配置文件,并獲得其中的dom元素StringfilePath=getInitParameter("configXML");StringfileRealPath=getServletContext().getRealPath(filePath);//嘗試建立配置文件的DOMtry{org.jdom.input.SAXBuilderbuilder=newSAXBuilder();org.jdom.DocumentpDoc=builder.build(fileRealPath);configContext=JXPathContext.newContext(pDoc);GlobalObjectProvider.init(configContext);}catch(Exceptione){System.out.println("Servlet初始化失敗!");}//初始化共通類以獲取頁面信息monConst.init();}//每一種動(dòng)作第一次執(zhí)行的時(shí)候,初始化對(duì)應(yīng)的類publicvoiddoPost(ServletRequestrequest,ServletResponseresponse)throwsServletException,IOException{//設(shè)置提交表單的中文編碼request.setCharacterEncoding("GBK");SessionmySession=request.getSession(true);//得到用戶輸入信息StringsPageId=request.getParameter("pageId");StringsActionId=request.getParameter("actionId");if(sPageId==null||sPageId.equals("")||sActionId==null||sActionId.equals("")){//非法進(jìn)入頁面,跳轉(zhuǎn)到首頁mySession.invalidate();response.sendRedirect("../login.jsp");return;}//如果非法進(jìn)入頁面〔登錄頁面除外〕if(!sPageId.equals("S001")&&mySession.getAttribute("loginUser")==null){//非法進(jìn)入頁面,跳轉(zhuǎn)到首頁mySession.invalidate();response.sendRedirect("../login.jsp");return;}try{//根據(jù)pageId獲得處理對(duì)象,如果沒有那么創(chuàng)立一個(gè)對(duì)象ObjectoActionObject=hPageHandler.get(sPageId);if(oActionObject==null){//根據(jù)配置文件創(chuàng)立一個(gè)新對(duì)象StringsClassName=(String)configContext.getValue("ch08-config/page[id='"+sPageId+"']/className");oActionObject=Class.forName(sClassName).newInstance();hPageHandler.put(sPageId,oActionObject);}//取得方法名StringsMethodName=(String)configContext.getValue("ch08-config/page[id='"+sPageId+"']/action[id='"+sActionId+"']/methodName");//生成對(duì)應(yīng)的參數(shù),并調(diào)用對(duì)應(yīng)對(duì)象的對(duì)應(yīng)方法//inputData是根據(jù)傳入的參數(shù)做成的HashtableinputData=newHashtable();Enumerationparams=request.getParameterNames();while(params.hasMoreElements()){StringsParaName=(String)params.nextElement();inputData.put(sParaName,request.getParameter(sParaName));}//outputData是下一個(gè)頁面的值域,在此只是被初始化HashtableoutputData=newHashtable();//生成參數(shù)列表Class[]paraType={Class.forName("java.util.Hashtable"),Class.forName("java.util.Hashtable"),Class.forName("javax.servlet..Session")};Object[]paraObj={inputData,outputData,mySession};//生成Method對(duì)象MethodinvokeMethod=oActionObject.getClass().getMethod(sMethodName,paraType);//調(diào)用方法invokeMethod.invoke(oActionObjec
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 電商平臺(tái)的現(xiàn)代營銷策略分析
- 現(xiàn)代家庭火災(zāi)隱患及防范措施匯報(bào)
- 農(nóng)產(chǎn)品批發(fā)商業(yè)務(wù)提升考核試卷
- 電子商務(wù)與地方稅務(wù)政策的互動(dòng)關(guān)系
- 生產(chǎn)環(huán)節(jié)的低碳技術(shù)創(chuàng)新實(shí)踐研究
- 生產(chǎn)車間的安全與健康管理標(biāo)準(zhǔn)化研究
- 構(gòu)建高效社區(qū)養(yǎng)老家政服務(wù)體系
- 生活用紙的設(shè)計(jì)美學(xué)與消費(fèi)者體驗(yàn)提升
- 絲織品在服裝設(shè)計(jì)與時(shí)尚領(lǐng)域的應(yīng)用與影響考核試卷
- 儀器儀表制造業(yè)的研發(fā)投資與技術(shù)推廣方法與效果評(píng)估考核試卷
- 全名校北師大版數(shù)學(xué)五年級(jí)下冊第三單元達(dá)標(biāo)測試卷(含答案)
- 新員工入職通識(shí)考試(中軟國際)
- 四星級(jí)酒店工程樣板房裝修施工匯報(bào)
- 圓翳內(nèi)障病(老年性白內(nèi)障)中醫(yī)診療方案
- 中考物理復(fù)習(xí)備考策略
- 博士后進(jìn)站申請(qǐng)書博士后進(jìn)站申請(qǐng)書八篇
- 小報(bào):人工智能科技科學(xué)小報(bào)手抄報(bào)電子小報(bào)word小報(bào)
- GB/T 41509-2022綠色制造干式切削工藝性能評(píng)價(jià)規(guī)范
- 公安系防暴安全03安檢
- 孫權(quán)勸學(xué)教案全國一等獎(jiǎng)教學(xué)設(shè)計(jì)
- 企業(yè)生產(chǎn)現(xiàn)場6S管理知識(shí)培訓(xùn)課件
評(píng)論
0/150
提交評(píng)論