訂餐系統(tǒng)javaee課程設(shè)計_第1頁
訂餐系統(tǒng)javaee課程設(shè)計_第2頁
訂餐系統(tǒng)javaee課程設(shè)計_第3頁
訂餐系統(tǒng)javaee課程設(shè)計_第4頁
訂餐系統(tǒng)javaee課程設(shè)計_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

網(wǎng)上訂餐系統(tǒng)課程設(shè)計的目的當計算機與互聯(lián)網(wǎng)飛速的發(fā)展和使用,越來越多的公司、單位和個人通過網(wǎng)站提供服務(wù)、公布信息、交流知識等使互聯(lián)網(wǎng)越來越方便我們的生活。在Web開發(fā)中,Java語言以其可擴展性、靈活性、可靠性和跨平臺等特點,成為進行web編程的首選。更重要的是,開源社區(qū)提供了一大批功能強大的框架技術(shù),Structs、Spring、Hibernate等,利用這些技術(shù)使我們更高效的維護和建立我們自己的網(wǎng)站同時也讓網(wǎng)站的開發(fā)更加方便和快捷。在這學(xué)期課堂上所學(xué)到的Java知識,能夠為我們解決一些實際問題的能力。利用一周時間,使用Java框架技術(shù)完成網(wǎng)上訂餐系統(tǒng)的分析設(shè)計和開發(fā)。有了網(wǎng)上訂餐系統(tǒng),人們可以在家隨意挑選自己喜愛的食物?,F(xiàn)在正是經(jīng)濟全球化的時代,利用網(wǎng)絡(luò),我們可以瀏覽不同地區(qū)甚至不同國家的商品,這也改變著人們的消費觀,網(wǎng)上訂餐系統(tǒng)正是符合了這一趨勢的發(fā)展,越來越多的人能夠不出門就能吃上美味可口的飯菜。設(shè)計方案論證2.1需求分析隨著科技的進步、計算機技術(shù)的發(fā)展,越來越多的人選擇用網(wǎng)絡(luò)來滿足自己的需求,網(wǎng)上訂餐的出現(xiàn),正是體現(xiàn)了這一點。不少商家都把眼觀放在了網(wǎng)上銷售這一方面,把實體銷售漸漸轉(zhuǎn)變?yōu)榫W(wǎng)上銷售?,F(xiàn)在人們越來越重視節(jié)省時間,提高效率,不管是消費者還是商家都如此,有了網(wǎng)上訂餐系統(tǒng),可以讓訂餐者與餐廳進行互動,足不出戶,選擇自己喜愛的菜品,對與商家而言,這樣做節(jié)省了成本,不需要為實體店的地址而煩惱,這樣做對于商家和消費者來說無疑是雙贏的。2.2系統(tǒng)總體設(shè)計本系統(tǒng)為了便于各種操作,采用多頁面的模式。用戶可在不同網(wǎng)頁進行相應(yīng)操作:⑴在管理員信息表中,包括的數(shù)據(jù)項:帳號,密碼,權(quán)限,注冊時間。⑵在訂餐客戶信息表中,包括的數(shù)據(jù)項:用戶編號,用戶名,密碼,姓名,電話,身份證,注冊時間等。⑶在菜品信息表中,包括的數(shù)據(jù)項:菜品編號,菜品名稱,菜品價格,內(nèi)容,類別:添加時間等,每道菜都有它的菜名、介紹、價格等信息,為了讓菜品的這些信息在頁面有個很好的呈現(xiàn),我們把這些信息存入菜品信息表中進行維護。。⑷在定單列表中,包括的數(shù)據(jù)項:定單列表編號,用戶名,菜品編號,下單時間等。⑸在購物車信息,包括的數(shù)據(jù)項:購物車信息唯一標識,食品id,訂餐用戶名,添加時間等。當顧客選購菜品放入購物車時,我們會把這些菜品的id、數(shù)量、價格記錄存入訂單關(guān)聯(lián)表中,通過訂單關(guān)聯(lián)表中的信息算出會員將要支付的金額,再通過菜品id這個主健把相應(yīng)的信息存入個人訂單這張表中進行維護。⑹為了有效地管理菜品,在新增菜品時加了一個分類屬性,在此需要建張分類表進行維護,系統(tǒng)總體功能圖如圖1所示。圖1系統(tǒng)功能框圖2.3系統(tǒng)流程設(shè)計課程設(shè)計信息管理系統(tǒng),包括用戶注冊、管理員登錄、菜品查詢、菜品詳單等。任務(wù)執(zhí)行的流程如圖2所示。

圖2系統(tǒng)流程圖2.4數(shù)據(jù)庫設(shè)計該系統(tǒng)是借助MySQL數(shù)據(jù)庫對數(shù)據(jù)進行統(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是否菜品編號bianhaovarchar20否是菜品編碼mingchengvarchar50否是菜品名稱leibievarchar20否是菜品類別tupianvarchar50否是菜品圖片jianjievarchar50否是菜品簡介faburenvarchar30否是發(fā)布人2.4.2管理員信息表管理員信息表,存儲系統(tǒng)中的管理員信息。把漢字轉(zhuǎn)化為漢語拼音,作為字段名。其中,ID設(shè)置為int型,并設(shè)為主鍵,且不能為空;username、pwd設(shè)置為varchar型,如表2所示。表2管理員信息表字段名類型長度是否為主鍵是否為空說明IdInt10是否用戶編號usernameVarchar30否是用戶姓名PwdVarchar30否是用戶密碼2.4.3用戶注冊信息表用戶注冊信息表,記錄系統(tǒng)中的注冊用戶信息。把漢字轉(zhuǎn)化為漢語拼音,作為字段名。把ID設(shè)為主鍵,且不為空,zhanghao、mima、ximgming、diqu、zhaopian、issh與之相關(guān)聯(lián)。表3用戶注冊信息表字段名類型長度是否為主鍵是否為空說明idint11是否編號Zhanghaovarchar30否是賬號mimavarchar20否是密碼Xingmingvarchar30否是姓名Diquvarchar50否是地區(qū)Zhaopianvarchar50否是照片Isshvarchar10否是備注2.5主要功能用struts框架中的異常處理機制,本系統(tǒng)自定義了異常類SystemException和異常處理類SystemExceptionHandler。在MessageRperties中定義需要在Dao中拋出異常時聲明的內(nèi)容。在struts-config.xml中配置公共異常處理文件<global-exceptions>,加入資源文件<message-resourcesparameter="MessageResources"/>在Dao中拋出自定義異常。并在公共異常處理頁面中使用struts標簽<html:errors/>進行異常信息顯示。顧客模塊為封裝的異常跳轉(zhuǎn)頁面如下圖3所示:美美健廳發(fā)情提示德:此功能正在增護中….由近回一和誘訛解“m-r-LiH^iiaut而戛,-、虹丁圖3在struts-config.xml文件中的配置信息如下:<global-exceptions><exceptionkey="errors.detail”type="com.hhq.util.SystemException”handler="com.hhq.util.SystemExceptionHandler”path="/jsp/clientError.jsp"/></global-exceptions>在配置文件中可見,異常是以鍵值對的方式在struts1.1中存放,type屬性是指異常類,handler屬性是指異常的處理類,path屬性是指出現(xiàn)異常后跳轉(zhuǎn)的錯誤頁面。設(shè)計結(jié)果與分析3.1訂餐系統(tǒng)登錄界面設(shè)計該系統(tǒng)通過輸入用戶名和密碼進行登錄,登錄界面如圖4所示。

美釜容上IT曾系婚i-ianiwirjpffftK*4is耐曲ifcja容Sfltsi卜旁業(yè)m\Hm千ci督廳管理一.員晶統(tǒng)圖4登錄界面督廳管理一.員晶統(tǒng)功能描述:顧客登陸管理,包括登陸時管理員需要輸入用戶名、密碼、驗證碼、也可已選擇是否記錄用戶名和密碼以便以后登錄。如果管理員選擇記住用戶名和密碼則下一次登陸的時候只需要輸入驗證碼,即可直接登錄。登錄頁面控制模塊Login相關(guān)代碼如下:login.jsp:<%@pagelanguage="java”import="java.util.*,com.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,HttpSessionmySession)throwsException{〃獲取輸入信息StringsUsername=(String)inputData.get("username");StringsPassword=(String)inputData.get("password");//校驗用戶輸入信息LUserlUser=(LUser)GlobalObjectProvider.getLogicService(CommonConst.LOGIC_KEY_USER);〃如果對應(yīng)的類沒有的話,報錯并返回login頁面if(lUser==null){thrownewException("用戶名或密碼錯誤請重新輸入!");}〃獲取用戶信息Useruserinfo=lUser.getUserInfo(sUsername,sPassword);if(userinfo==null){outputData.put("pageid",CommonConst.VIEWID_LOGIN);outputData.put("errMsg”,”用戶名密碼檢杳失敗!請重新輸入。”);outputData.put("username",sUsername);return;}Else{outputData.put("pageid”,CommonConst.VIEWID_MENU);//往session中設(shè)置用戶信息mySession.setAttribute("loginUser”,userInfo);return;}}}

3.2訂餐系統(tǒng)主頁面模塊設(shè)計M煤目旬*.M煤目旬*.用戶可以通過訂餐系統(tǒng)主頁面進行訂餐如圖5所示。1美美餐廳網(wǎng)上訂餐管理系統(tǒng)建母it居&4£:Oi的房,拆嚀哈蜀怕格:同味ft*四巨523回恂酵.AmmJr功能描述:顧客登陸管理,包括登陸時可以以游客或者會員的兩種方式進行訂餐操作,如果是會員登陸,先前需要錄入用戶名、密碼、驗證碼,以便系統(tǒng)確認登陸成功。會員個人信息管理,會員可以修改個人資料(如:電話,地址等),也可以查看訂餐信息,了解當前訂餐的動態(tài)(詳見會員登錄流程圖)。選購美食,作為顧客,在挑選美食的過程中,可以直接將稱心的美食選進購物車中也可通過一系列查詢,進一步了解后,再選擇美食(詳見選購美食流程圖)。選購美食部分代碼如下://得到在Spring中動態(tài)注入的Service層對象//得到日志對象logpublicActionForwardqueryForAll(ActionMappingmapping,ActionFormform,HttpServletRequestrequest,HttpServletResponseresponse)(Stringforward="first";

if(request.getParameter("user").equals("manager")){forward="queryDishes";}Foodfood=newFood();List<Food>foodList=null;List<Food>topList=null;intallRecorders=foodService.queryForAllRecorders(food);〃當不是第一次登陸頁面時if(request.getParameter("cp")!=null&&request.getParameter("ls")!=null){intcurrentPage=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的listrequest.setAttribute("topList",topList);〃傳給視頻圖片等信息的listrequest.setAttribute("foodList",foodList);〃傳給下拉列表的listrequest.setAttribute("foodAttributeList",foodAttributeList);returnmapping.findForward(forward);}首先判斷是從哪個頁面跳到到這里來調(diào)用這一方法,隨著調(diào)用者的不同,方法也會將最后的傳輸?shù)讲煌捻撁嬷腥?。然后查詢出所有美食的記錄?shù),再對是否是第一次登錄到此頁面進行判斷,以為,第一次登錄時當前頁數(shù)和每頁顯示行數(shù)是默認的,而此后登錄到此頁面時有可能發(fā)生改變,最后再用Spring中動態(tài)注入的服務(wù)層中食品類的對象調(diào)用查詢食品信息的方法,再將結(jié)果通過request對象傳輸?shù)綄?yīng)的頁面中去。publicStringgetFoodInfo(Stringsrc)(〃圖片絕對路徑Stringpicsrc=null;StringfoodInfo=null;〃只保留相對路徑,將絕對路徑去掉Stringtemp[]=src.split("/");for(inti=0;i<temp.length;i++)(//得到圖片的相對路徑picsrc=temp[temp.length-1];}Foodfd=foodDAO.query(picsrc);foodInfo=fd.getFoodDescription();returnfoodInfo;}此方法要在jsp頁面中有DWR的對象調(diào)用,其中得到的路徑是圖片在服務(wù)器上的絕對路徑,首先用String類中的split方法將其截成數(shù)據(jù)庫中所存入得圖片路徑形式,然后再作為查詢條件在數(shù)據(jù)庫中查詢,查詢出美食的信息。然后DWR對象會將查詢出來的信息作為jsp頁面中回調(diào)函數(shù)的參數(shù)傳回頁面端。3.3美食信息添加功能模塊功能描述:對菜品信息進行維護,包括:⑴添加菜品,添加菜品圖品,價格,是否是推薦菜品等。⑵菜品過季下架,用于菜品原料缺少或菜品過季等情況,進行邏輯刪除。⑶菜品的查詢,可以按菜品的名稱、價格、銷售量、是否是推薦菜品進行查詢,默認是推薦菜品查詢。⑷修改維護菜品信息,主要針對菜品原料的價格更變菜品的價格及菜品是打折時的價格更變,如圖6所示。圖6美食添加中圖片上傳功能代碼如下:/**圖片上傳**/……/定義局部變量try{IPTimeStampits=newIPTimeStamp(request.getRemoteAddr());〃自動為上傳圖片命名,以確定圖片的唯一性,以防覆蓋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();/**圖片上傳結(jié)束**/首先,有系統(tǒng)自動未上傳圖片命名,防止覆蓋,然后通過字符串拼接的方式作為圖片的地址存入數(shù)據(jù)庫(例如:圖片名稱叫aaa,擴展名為jpg,在存入數(shù)據(jù)庫中的地址就是相對地址系統(tǒng)自動生成的名字.jpg),在通過輸入輸出流的方式將圖片上傳到服務(wù)器上。即由從form中得到的圖片路徑以流的方式服務(wù)器上的一本系統(tǒng)自動并命好的文件上,最后關(guān)閉輸入流和輸入流,并將文件損毀。另附圖片自動命名類的部分代碼如下〃為了得到不重復(fù)的圖片名稱(首先用數(shù)字零給本機IP地址的點補位,然后再加上當前時間(精確到毫秒),最后再加上三個隨機數(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)在實例化自動命名類對象是賦值,即是本機的ip地址,將ip地址通過“.”字符來分開有字符串數(shù)組接收,再將每部分未滿三位的進行補零操作,再加上時間戳,最后加上三位隨機數(shù),再將StringBuffer轉(zhuǎn)換成String對象最后得到的內(nèi)容既是系統(tǒ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)系hhqe.printStackTrace();log.error("系統(tǒng)添加食品類別信息過多!”,e);thrownewSystemException("foodattributelargenum.error”,e);}foodattribute=newFoodAttribute();foodattribute.setAttributeId(attributeid);foodattribute.setAttributeName(newAttributeName);//將新類別向?qū)傩员碇胁逯祎ry{isAdd=foodService.addFoodAttribute(foodattribute);}catch(Exceptione){e.printStackTrace();log.error("系統(tǒng)添加食品類別信息時錯誤!”,e);thrownewSystemException("foodattributeadd.error”,e);}if(isAdd==true){food.setFoodTypeId(attributeid);}}基于美食的類別操作的可添加性,則需要判斷是在文本框中填寫的美食內(nèi)容(即:新類別),還是在下拉菜單中選擇的內(nèi)容(即:老類別),如果是老類別則可以利用原有的類別編號直接填入數(shù)據(jù)庫中。而如果是新類別則需要生成新的類別編號,再將類別編號填入到數(shù)據(jù)庫中。3.4訂單查詢功能描述:對顧客的購物車所下的訂單進行管理,包括:⑴查看訂單,可按訂單號、用戶姓名進行查詢管理員可以查看到當前餐廳的訂單,并可以進行打印訂單以確認發(fā)貨。⑵修改訂單,管理員對不在自己店范圍內(nèi)的訂單可進行手動或者可以在訂單狀態(tài)為等待中時為顧客修改菜品的數(shù)量及品種,若訂單狀態(tài)為以下單則不能為顧客修改。⑶打印訂單,若打印訂單表示以確認發(fā)貨,并自動修改訂單狀態(tài)為已發(fā)送。⑷取消訂單,若顧客不方便上網(wǎng)打電話要取消訂餐的話,管理員查看訂單狀態(tài)若為已下單則不能為顧客取消訂單,若訂單狀態(tài)在等待中,則可以為顧客取消訂單,如圖7

所示。管理員null:您好感謝翰使用,安全退出訂單查詢待址理訂旦己誦,打里已無變訂單E有打單美除曾理會H&S冒理豆信且蹴曹已搖點訂單訂單號訂單總所示。管理員null:您好感謝翰使用,安全退出訂單查詢待址理訂旦己誦,打里已無變訂單E有打單美除曾理會H&S冒理豆信且蹴曹已搖點訂單訂單號訂單總價U卷阿同廢條電詁訂單狀番正揉作241大樂區(qū)as。302010-04-2809:292812已完成asd查看訂單詳置z&l大樂區(qū)hh2010-04-2814;54J022已弄成sdt查看訂單洋231犬樂區(qū)岌大水4412010-04-3011:50:49121312313己完成岌大水查看訂單詳:首頁J[上一頁|[予一頁]尾頁第1知共項圖7訂單信息查詢頁面查詢訂單部分代碼如下:<selectid="getOrderBySAndUsBefore”parameterClass="com.hhq.domain.Order"resultClass="com.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,rownumasrnfromordertableo,attributetablea

whereo.orderstatusid=a.attributeid

ando.orderstatusidnotin('06001','06002')

ando.memberusernamelike#memberUserName#

and<![CDATA[rownum<=#currentPage#*#pageSize#]]>)tempWHERE<![CDATA[temp.rn>(#currentPage#-1)*#pageSize#]]></select>由于iBatis框架多持久層進行封裝,所以SQL語句在寫法上會有些不同,針對物理分頁這一要求,采用由rownum來控制輸出的列數(shù),在查詢結(jié)果上,也用到了oracle自己的函數(shù)to-char來對日期類型進行處理。其中,在select標簽中,id屬性對應(yīng)在DAO的實現(xiàn)類中對象smctemplate所調(diào)用的queryForList方法的第一個參數(shù),借此找到此SQL,來進行查詢操作。resultClass與parameterClass分別表示,結(jié)果類的類型和參數(shù)類的類型,其中還有標簽<![CDATA]>MiBatis中使用rownum來進行分頁操作所必須應(yīng)用到的。而如果在頁面上點擊“查看訂單詳情”則會彈出一個模態(tài)對話框,該對話框由兩部分組成,上半部分是美食的信息,有美食名稱、美食份數(shù)、美食單價、美食總價四個屬性,而其中有“沿著此處剪開”的字樣,下半部分則是顧客的信息有訂單號、訂單狀態(tài)、收貨人、地址、聯(lián)系電話、總價、支付方式、訂單時間、備注信息幾項組成。設(shè)計體會經(jīng)過一段時間的設(shè)計和開發(fā),網(wǎng)上訂餐系統(tǒng)基本開發(fā)完畢。其功能基本符合大眾需求,能夠完成菜肴的更新,菜肴的查詢,菜肴的下單,后臺的管理等各種功能但是由于課程設(shè)計時間較短和本人水平所限,雖然謝老師給予了我很多的指導(dǎo),但是該系統(tǒng)還有許多不盡如人意的地方,對于Java的框架技術(shù)我還需要深入的進行學(xué)習。如今信息化的普及,要想使該系統(tǒng)能在海量的網(wǎng)上訂餐系統(tǒng)中脫穎而出,以我們的編寫能力,及我們對需求的分析和了解以及業(yè)務(wù)上的熟練程度都顯得遠遠的不夠。還有一些后續(xù)工作需要完成,下一步的改進一定做到層次更清晰,功能劃分更明確,以實現(xiàn)更好的擴展性和重用性。參考文獻[1]嚴璋鵬.基于B-S的學(xué)生學(xué)籍管理系統(tǒng)的設(shè)計與實現(xiàn)[J].價值工程.2013.19:33-41⑵李剛.輕量級J2EE企業(yè)應(yīng)用實戰(zhàn)一Struts+Spring+Hibernate整合開發(fā)[M].北京:電子工業(yè)出版社,2011.3:46-75賈素玲,王強.JSP應(yīng)用開發(fā)技術(shù)[M].北京:清華大學(xué)出版社,2011.7:35-76王海濤,賈宗璞.基于Struts和Hibernate的Web應(yīng)用開發(fā)[J].計算機工程,2011,37(9):113.沈應(yīng)逵.JavaWeb數(shù)據(jù)庫系統(tǒng)應(yīng)用開發(fā)與實例M].北京:人民郵電出版社,2009.9:102-134.胡濤濤.基于MVC模式的課程管理系統(tǒng)的功能設(shè)計[J].山西煤炭管理干部學(xué)院學(xué)報,2013,04:140-142.任廣財.基于JSP的高校學(xué)生工作管理系統(tǒng)的設(shè)計與開發(fā)[J].科技經(jīng)濟市場,2013,12:119-120.施陽,張海燕,戴德偉.基于JavaEE的畢業(yè)設(shè)計管理系統(tǒng)設(shè)計與實現(xiàn)[J].軟件導(dǎo)刊,2015,02:86-88.趙春生.淺談JavaEE程序設(shè)計課程教學(xué)改革[J].科教導(dǎo)刊(中旬刊),2014,08:119-120.劉曉華,張健,周慧貞.JSP應(yīng)用開發(fā)詳解(第三版)[M].北京:電子工業(yè)出版社,2007.16.附錄:publicclassCommonServletextendsHttpServlet{〃保存各頁面Id對應(yīng)的action類的對象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初始化失??!");}〃初始化共通類以獲取頁面信息CommonConst.init();}〃每一種動作第一次執(zhí)行的時候,初始化對應(yīng)的類publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{〃設(shè)置提交表單的中文編碼request.setCharacterEncoding("GBK");HttpSessionmySession=request.getSession(true);〃得到用戶輸入信息StringsPageId=request.getParameter("pageId");StringsActionId=request.getParameter("actionId");if(sPageId==null||sPageId.equals("")||sActionId==null||sActionId.equals("")){//非法進入頁面,跳轉(zhuǎn)到首頁mySession.invalidate();response.sendRedirect("../login.jsp");return;}〃如果非法進入頁面(登錄頁面除外)if(!sPageId.equals("S001")&&mySession.getAttribute("loginUser")==null){//非法進入頁面,跳轉(zhuǎn)到首頁mySession.invalidate();response.sendRedirect("../login.jsp");return;}try{〃根據(jù)pageId獲得處理對象,如果沒有則創(chuàng)建一個對象ObjectoActionObject=hPageHandler.get(sPageId);if(oActionObject==null){〃根據(jù)配置文件創(chuàng)建一個新對象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='n+sPageId+n']/action[@id='n+sActionId+n']/@methodNamen);〃生成對應(yīng)的參數(shù),并調(diào)用對應(yīng)對象的對應(yīng)方法//inputData是根據(jù)傳入的參數(shù)做成的HashtableinputData=newHashtable();Enumerationparams=request.getParameterNames();while(params.hasMoreElements()){StringsParaName=(String)params.nextElement();inputData.put(sParaName,request.getParameter(sParaName));}//outputData是下一個頁面的值域,在此只是被初始化HashtableoutputData=newHashtable();〃生成參數(shù)列表Class[]paraType={Class.forName("java.util.Hashtable"),Class.forName("java.util.Hashtable"),Class.forName("javax.servlet.http.HttpSession")};Object[]paraObj={i

溫馨提示

  • 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

提交評論