版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、,第11講 基于Servlet的MVC設(shè)計(jì)模式,2,回顧,如何使用Map進(jìn)行數(shù)據(jù)的存?。?如何理解session在Web項(xiàng)目中的作用? 常用的集合類(lèi)有哪些?它們之間的區(qū)別是什么?,3,本講問(wèn)題,什么是設(shè)計(jì)模式? 如何理解MVC設(shè)計(jì)模式? 為什么需要MVC設(shè)計(jì)模式?,4,理解MVC的優(yōu)勢(shì) 掌握MVC的應(yīng)用開(kāi)發(fā) 在MVC中會(huì)使用Servlet 進(jìn)行程序控制,本章目標(biāo),5,JSP的缺點(diǎn)(2-1),JSP中登錄功能的實(shí)現(xiàn),提交數(shù)據(jù)到register.jsp,訪問(wèn)數(shù)據(jù)庫(kù),JSP中大量 調(diào)用業(yè)務(wù)代碼,JSP的主要作用是什么?,邏輯判斷,6,JSP的缺點(diǎn)(2-2),美工進(jìn)行頁(yè)面編輯和維護(hù),美工, / ,這是
2、什么呀?我 只認(rèn)識(shí)HTML標(biāo)簽,如果將流程控制和 數(shù)據(jù)顯示分離就好了,7,如何解決JSP的缺點(diǎn),1、在你所寫(xiě)的程序中,很多JSP頁(yè)面直接 訪問(wèn)數(shù)據(jù)庫(kù),如果數(shù)據(jù)庫(kù)表名改變了, 你所要做的工作是什么?,2、你的程序中所有的頁(yè)面都需要美工進(jìn)行美 化,但是他不懂Java怎么辦?,8,生活案例,顧客點(diǎn)菜,顧客點(diǎn)菜,廚師,菜肴,服務(wù)員,加工菜肴,服務(wù)員,把菜單給廚師,服務(wù)員上菜,把菜單給服務(wù)員,把菜給服務(wù)員,以各自的功 能進(jìn)行分工,9,Web程序的功能分工,如果把Web容器處理請(qǐng)求的過(guò)程按功能劃分, 你如何進(jìn)行劃分?,10,MVC設(shè)計(jì)模式(2-1),MVC設(shè)計(jì)模式 模型 - Model 視圖 - View
3、 控制器 - Controller,MVC 模式,控制器,模型,視圖,JavaBean,JSP,Servlet,11,MVC設(shè)計(jì)模式(2-2),模型:代表應(yīng)用程序狀態(tài)和業(yè)務(wù)邏輯,控制器:根據(jù)客戶的請(qǐng)求來(lái)操縱模型,并把結(jié)果經(jīng)由視圖展現(xiàn)給客戶,視圖:提供可交互的客戶界面,向客戶顯示模型數(shù)據(jù),MVC設(shè)計(jì)模式的模塊組成,12,Web程序的MVC,Web容器處理請(qǐng)求過(guò)程,請(qǐng)求,Servlet,JavaBean,JSP頁(yè)面,執(zhí)行,調(diào)用,轉(zhuǎn)向,響應(yīng),訪問(wèn),返回?cái)?shù)據(jù),數(shù) 據(jù) 庫(kù),客戶端,JSP視圖動(dòng) 態(tài)顯示數(shù)據(jù),數(shù) 據(jù) 庫(kù),Servlet控制器,用 于接收請(qǐng)求和控制 應(yīng)用程序的流程,JavaBean數(shù)據(jù) 模型
4、進(jìn)行業(yè)務(wù)邏 輯和訪問(wèn)數(shù)據(jù)庫(kù),13,MVC編程思路,MVC編程思路,執(zhí)行,Servlet接收客戶端 請(qǐng)求,并調(diào)用業(yè)務(wù)類(lèi) 的方法進(jìn)行數(shù)據(jù)處理,Servlet根據(jù)數(shù)據(jù)處理的 結(jié)果,控制下一個(gè)顯示 的HTML或者JSP頁(yè)面,Servlet,JSP頁(yè)面,轉(zhuǎn)向,JavaBean,調(diào)用,14,MVC編程(2-1),修改登錄為MVC模式, ,提交給Servlet,創(chuàng)建頁(yè)面-login2.html 使用Eclipce向?qū)?chuàng)建Servlet-LoginServlet.java, String pass = request.getParameter(password); String user = request.
5、getParameter(loginName); CheckLogin ck =new CheckLogin(); if (ck.validate(user, pass) response.sendRedirect(/store/ch05/books.jsp); else response.sendRedirect(/store/ch05/login2.html); ,創(chuàng)建一個(gè)業(yè)務(wù)類(lèi)對(duì)象, 并調(diào)用validate()方法 判斷用戶是否存在,15,MVC編程(2-2),修改登錄為MVC模式-創(chuàng)建業(yè)務(wù)類(lèi)CheckLogin.java,public class CheckLogin public b
6、oolean validate(String user, String pass) boolean valid = false; Connection dbConnection = null; ResultSet res = null; try String sql = select * from userinfo where loginname = ? ; Connection con = ConnectionManager.getConnction(); PreparedStatement pStatement = con.prepareStatement(sql); pStatement
7、.setString(1, user); res = pStatement.executeQuery(); if (res.next() ,查詢數(shù)據(jù)庫(kù),如果存在該用戶返回true,否則返回false,演示示例2:CheckLogin.java,16,小結(jié),MVC的三層結(jié)構(gòu)是按什么來(lái)劃分?每一層的功能和組件是什么? 舉幾個(gè)例子說(shuō)明在程序中使用MVC的好處?,17,MVC實(shí)現(xiàn)結(jié)賬功能(3-2),增加結(jié)帳的功能,創(chuàng)建處理訂單的Servlet- ProcessOrder.java,String username = request.getParameter(username);/ 用戶名 String
8、 zipcode = request.getParameter(zipcode);/ 郵編 String phone = request.getParameter(phone);/ 電話 String creditcard = request.getParameter(creditcard);/ 信用卡 HttpSession session = request.getSession(); double total = (Double)session.getAttribute(total).doubleValue(); OrderOperation op = new OrderOperatio
9、n(); op.saveOrder(username, zipcode, phone, creditcard, total); session.invalidate(); request.getRequestDispatcher(/ch05/bye.jsp) .forward(request,response);,創(chuàng)建業(yè)務(wù)類(lèi)對(duì)象,并調(diào)用操作數(shù)據(jù)庫(kù)方法,從session中取出total,讓session失效,18,MVC實(shí)現(xiàn)結(jié)賬功能(3-3),增加結(jié)帳的功能,創(chuàng)建操作數(shù)據(jù)庫(kù)業(yè)務(wù)類(lèi)- OrderOperation.java,public class OrderOperation public in
10、t saveOrder(String username,String zipcode, String phone,String creditcard, double total) int result = 0; try Connection con = ConnectionManager.getConnction(); String strSql = insert into BookOrder(username,zipcode,phone, + creditcard,total) values(?,?,?,?,?); PreparedStatement pStatement = con.prepareStatement(strSql); pStatement.setString(1, username); /設(shè)置其他參數(shù)值 result = pStatement.executeUpdat
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 長(zhǎng)江藝術(shù)工程職業(yè)學(xué)院《粉末冶金原理(一)》2023-2024學(xué)年第二學(xué)期期末試卷
- 濱州科技職業(yè)學(xué)院《大學(xué)生心理教育1》2023-2024學(xué)年第二學(xué)期期末試卷
- 安陽(yáng)工學(xué)院《工業(yè)爐窯》2023-2024學(xué)年第二學(xué)期期末試卷
- 資陽(yáng)環(huán)境科技職業(yè)學(xué)院《化工專(zhuān)業(yè)英語(yǔ)與寫(xiě)作》2023-2024學(xué)年第二學(xué)期期末試卷
- 陜西能源職業(yè)技術(shù)學(xué)院《服裝組織與表演》2023-2024學(xué)年第二學(xué)期期末試卷
- 石家莊學(xué)院《建筑工程施工圖預(yù)算課程設(shè)計(jì)》2023-2024學(xué)年第二學(xué)期期末試卷
- 工業(yè)互聯(lián)網(wǎng)標(biāo)識(shí)解析安全保障措施協(xié)議2025
- 公司合規(guī)管理制度包括哪些制度
- 腦機(jī)接口與康復(fù)醫(yī)療融合
- 衛(wèi)生院醫(yī)?;鸸芾碇贫确段?/a>
- 婦幼衛(wèi)生上報(bào)管理制度
- (新教材)2026年春期部編人教版二年級(jí)下冊(cè)語(yǔ)文教學(xué)計(jì)劃及進(jìn)度表
- 2026黑龍江省文化和旅游廳所屬事業(yè)單位招聘工作人員21人考試參考試題及答案解析
- 破產(chǎn)管理人業(yè)務(wù)培訓(xùn)制度
- 2026中國(guó)電信四川公用信息產(chǎn)業(yè)有限責(zé)任公司社會(huì)成熟人才招聘?jìng)淇碱}庫(kù)完整答案詳解
- 環(huán)境應(yīng)急培訓(xùn)課件
- 2026河南鄭州信息工程職業(yè)學(xué)院招聘67人參考題庫(kù)含答案
- 2026年中國(guó)煙草招聘筆試綜合知識(shí)題庫(kù)含答案
- 醫(yī)療機(jī)構(gòu)藥品配送服務(wù)評(píng)價(jià)體系
- 業(yè)務(wù)持續(xù)性與災(zāi)難恢復(fù)模板
- 婦科微創(chuàng)術(shù)后護(hù)理新進(jìn)展
評(píng)論
0/150
提交評(píng)論