版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、2 2 23 主要內(nèi)容主要內(nèi)容 MVC模式介紹模式介紹 JSP中的中的MVC模式模式 模型的生命周期與視圖更新模型的生命周期與視圖更新 MVC模式的簡(jiǎn)單實(shí)例模式的簡(jiǎn)單實(shí)例 MVC模式與文件操作模式與文件操作 MVC模式與數(shù)據(jù)庫(kù)操作模式與數(shù)據(jù)庫(kù)操作 MVC模式與注冊(cè)登錄模式與注冊(cè)登錄 難點(diǎn)難點(diǎn) 模型的生命周期與視圖更新模型的生命周期與視圖更新 MVC模式與注冊(cè)登錄模式與注冊(cè)登錄 關(guān)鍵實(shí)踐關(guān)鍵實(shí)踐 計(jì)算數(shù)列之和計(jì)算數(shù)列之和4 MVC模式的核心思想是有效地組合模式的核心思想是有效地組合“視圖視圖”、“模型模型”和和“控制器控制器”。 本章將介紹本章將介紹MVC模式,掌握該模式對(duì)于設(shè)計(jì)合理的模式,掌握
2、該模式對(duì)于設(shè)計(jì)合理的Web應(yīng)用框架有著十分重要的意義。應(yīng)用框架有著十分重要的意義。5 Model I 體系結(jié)構(gòu)結(jié)合使用體系結(jié)構(gòu)結(jié)合使用 JSP 頁(yè)面和頁(yè)面和 JavaBean 來(lái)開來(lái)開發(fā)發(fā) Web 應(yīng)用程序應(yīng)用程序請(qǐng)求 應(yīng)用服務(wù)器響應(yīng)JSP頁(yè)面頁(yè)面JavaBean數(shù)據(jù)庫(kù)服務(wù)器6請(qǐng)求 應(yīng)用服務(wù)器響應(yīng)JSP頁(yè)面頁(yè)面JavaBeanServlet數(shù)據(jù)庫(kù)服務(wù)器789 MVC是一種通過(guò)三個(gè)不同部分構(gòu)造一個(gè)軟件或組件的理是一種通過(guò)三個(gè)不同部分構(gòu)造一個(gè)軟件或組件的理想辦法:想辦法: 模型(模型(Model)用于存儲(chǔ)數(shù)據(jù)的對(duì)象。用于存儲(chǔ)數(shù)據(jù)的對(duì)象。 視圖(視圖(View)為模型提供數(shù)據(jù)顯示的對(duì)象。為模型提供數(shù)
3、據(jù)顯示的對(duì)象。 控制器(控制器(Controller)負(fù)責(zé)具體的業(yè)務(wù)邏輯操作,即負(fù)責(zé)具體的業(yè)務(wù)邏輯操作,即控制器根據(jù)視圖提出的要求對(duì)數(shù)據(jù)做出處理,并將有關(guān)結(jié)控制器根據(jù)視圖提出的要求對(duì)數(shù)據(jù)做出處理,并將有關(guān)結(jié)果存儲(chǔ)到模型中,同時(shí)負(fù)責(zé)讓模型和視圖進(jìn)行必要的交互,果存儲(chǔ)到模型中,同時(shí)負(fù)責(zé)讓模型和視圖進(jìn)行必要的交互,當(dāng)模型中的數(shù)據(jù)變化時(shí),讓視圖更新顯示。當(dāng)模型中的數(shù)據(jù)變化時(shí),讓視圖更新顯示。101112 課本中的描述課本中的描述 在在JSP中,中,“視圖視圖”、“模型模型”和和“控制器控制器”的具體實(shí)現(xiàn)的具體實(shí)現(xiàn)如下:如下: 模型(模型(Model):): 一個(gè)或多個(gè)一個(gè)或多個(gè)JavaBean對(duì)象,用
4、于存儲(chǔ)數(shù)據(jù),對(duì)象,用于存儲(chǔ)數(shù)據(jù),JavaBean主要主要提供簡(jiǎn)單的提供簡(jiǎn)單的setXXX()方法和方法和getXXX()方法,在這些方法中不方法,在這些方法中不涉及對(duì)數(shù)據(jù)的具體處理細(xì)節(jié)。涉及對(duì)數(shù)據(jù)的具體處理細(xì)節(jié)。 視圖(視圖(View):): 一個(gè)或多個(gè)一個(gè)或多個(gè)JSP頁(yè)面,為模型提供數(shù)據(jù)顯示,頁(yè)面,為模型提供數(shù)據(jù)顯示,JSP頁(yè)面主要頁(yè)面主要使用使用 HTML標(biāo)記和標(biāo)記和JavaBean標(biāo)記來(lái)顯示數(shù)據(jù)。標(biāo)記來(lái)顯示數(shù)據(jù)。 控制器(控制器(Controller):): 一個(gè)或多個(gè)一個(gè)或多個(gè)Servlet對(duì)象,根據(jù)視圖提交的要求進(jìn)行數(shù)據(jù)處理對(duì)象,根據(jù)視圖提交的要求進(jìn)行數(shù)據(jù)處理操作,并將有關(guān)的結(jié)果存儲(chǔ)
5、到操作,并將有關(guān)的結(jié)果存儲(chǔ)到JavaBean中,然后中,然后Servlet使使用重定向方式請(qǐng)求視圖中的某個(gè)用重定向方式請(qǐng)求視圖中的某個(gè)JSP頁(yè)面更新顯示。頁(yè)面更新顯示。13 模型(模型(Model)1415 JSP中的中的MVC模式模式16 在在JSP中的中的MVC模式中,由控制器模式中,由控制器servet負(fù)責(zé)創(chuàng)建負(fù)責(zé)創(chuàng)建Javabean,并將有關(guān)數(shù)據(jù)存儲(chǔ)到所創(chuàng)建的,并將有關(guān)數(shù)據(jù)存儲(chǔ)到所創(chuàng)建的Javabean中,中,然后然后servlet請(qǐng)求某個(gè)請(qǐng)求某個(gè)JSP頁(yè)面使用頁(yè)面使用Javabean的的getProperty動(dòng)作標(biāo)記:動(dòng)作標(biāo)記: 顯示顯示Javabean的中的數(shù)據(jù)。的中的數(shù)據(jù)。 在在
6、JSP中的中的MVC模式中,模式中,servet創(chuàng)建的創(chuàng)建的Javabean也涉及到也涉及到生命周期,生命周期分為生命周期,生命周期分為request、session和和application。 以下假設(shè)創(chuàng)建以下假設(shè)創(chuàng)建Javabean的類的名字是的類的名字是BeanClass,該類,該類的包名為的包名為user.yourbean。17 1Javabean的創(chuàng)建的創(chuàng)建 2視圖更新視圖更新 servlet請(qǐng)求一個(gè)請(qǐng)求一個(gè)JSP頁(yè)面頁(yè)面 JSP頁(yè)面使用如下標(biāo)記獲得頁(yè)面使用如下標(biāo)記獲得Servlet所創(chuàng)建的所創(chuàng)建的JavaBean的引用的引用 : JSP頁(yè)面使用如下標(biāo)記顯示頁(yè)面使用如下標(biāo)記顯示bea
7、n中的數(shù)據(jù)。中的數(shù)據(jù)。 RequestDispatcher dispatcher= request.getRequestDispatcher(show.jsp);dispatcher.forward(request,response); BeanClass bean=new BeanClass(); request.setAttribute(keyWord,bean);18 1Javabean的創(chuàng)建的創(chuàng)建 2視圖更新視圖更新 一個(gè)用戶在訪問(wèn)一個(gè)用戶在訪問(wèn)Web服務(wù)目錄的各個(gè)服務(wù)目錄的各個(gè)JSP中都可以使用中都可以使用如下標(biāo)記獲得如下標(biāo)記獲得servlet所創(chuàng)建的所創(chuàng)建的bean的引用的引用 B
8、eanClass bean=new BeanClass(); HttpSession session=request.getSession(true);session.setAttribute(keyWord,bean); 19 1Javabean的創(chuàng)建的創(chuàng)建 2視圖更新視圖更新 一個(gè)用戶在訪問(wèn)一個(gè)用戶在訪問(wèn)Web服務(wù)目錄的各個(gè)服務(wù)目錄的各個(gè)JSP中都可以使用中都可以使用如下標(biāo)記獲得如下標(biāo)記獲得servlet所創(chuàng)建的所創(chuàng)建的bean的引用的引用 BeanClass bean=new BeanClass(); getServletContext().setAttribute(keyWord,be
9、an); 20 計(jì)算三角形和梯形的面積:存放數(shù)據(jù)的模型計(jì)算三角形和梯形的面積:存放數(shù)據(jù)的模型public class Area double a,b,c,area; String mess; public void setMess(String mess) this.mess=mess; public String getMess() return mess; public void setA(double a) this.a=a; public void setB(double b) this.b=b; public void setC(double c) this.c=c; public
10、void setArea(double s) area=s; public double getArea() return area; 21 計(jì)算三角形和梯形的面積:控制器計(jì)算三角形和梯形的面積:控制器public class HandleArea extends HttpServlet public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException Area dataBean=new Area(); /創(chuàng)建創(chuàng)建Javabean對(duì)象對(duì)象
11、 request.setAttribute(data,dataBean);/將將dataBean存儲(chǔ)到存儲(chǔ)到request對(duì)象中對(duì)象中 try double a=Double.parseDouble(request.getParameter(a); double b=Double.parseDouble(request.getParameter(b); double c=Double.parseDouble(request.getParameter(c); dataBean.setA(a); dataBean.setB(b); dataBean.setC(c); double s=-1; do
12、uble p=(a+b+c)/2.0; if(a+bc&a+cb&b+ca) s=Math.sqrt(p*(p-a)*(p-b)*(p-c); dataBean.setArea(s); dataBean.setMess(三角形面積三角形面積); catch(Exception e) dataBean.setArea(-1); dataBean.setMess(+e); RequestDispatcher dispatcher=request.getRequestDispatcher(showResult.jsp); dispatcher.forward(request,response); p
13、ublic void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException 22 計(jì)算三角形和梯形的面積:控制器計(jì)算三角形和梯形的面積:控制器 computerArea user.yourservlet.HandleArea computerArea /lookArea23 計(jì)算三角形和梯形的面積:視圖計(jì)算三角形和梯形的面積:視圖 三角形:三角形: 輸入邊輸入邊A: 輸入邊輸入邊B: 輸入邊輸入邊C: 梯形:梯形: 輸入上底輸入上底: 輸入下底輸入下底
14、: 輸入高輸入高: 24 計(jì)算三角形和梯形的面積:視圖計(jì)算三角形和梯形的面積:視圖 : 2525262627272830double a = Double.parseDouble(request.getParameter(a);Area area = new Area();area.setA(a);AreaService service = new AreaService();if(triangle.equals(type) area = puterTriangleArea(area);request.setAttribute(data,area);RequestDispatcher disp
15、atcher = request.getRequestDispatcher(showResult.jsp);dispatcher.forward(request, response);public class AreaService public Area computerArea(Area area) return area;double a;double b;double c;double area;String type;Area.javaAreaService.java 調(diào)用順序調(diào)用順序showResult.jspArea AreaService 在在MVC模式中,讀取文件的工作由模式
16、中,讀取文件的工作由servlet對(duì)象負(fù)責(zé),對(duì)象負(fù)責(zé),bean僅僅負(fù)責(zé)存儲(chǔ)僅僅負(fù)責(zé)存儲(chǔ)servlet對(duì)象所讀取的文件內(nèi)容。對(duì)象所讀取的文件內(nèi)容。 輸入文件的路徑輸入文件的路徑(如如:d:/2000): 輸入文件的名字輸入文件的名字(如如:Hello.java): 文件的名字:文件的名字:,文件的內(nèi)容:文件的內(nèi)容: public class FileMessage String filePath; String fileName; String fileContent; long fileLength; /省略省略getter和和setter方法方法public class HandleFile
17、 extends HttpServletpublic void doPost(HttpServletRequest request,HttpServletResponse response) FileMessage file=new FileMessage(); /創(chuàng)建創(chuàng)建Javabean對(duì)象對(duì)象 request.setAttribute(file,file); String filePath=request.getParameter(filePath); String fileName=request.getParameter(fileName); file.setFilePath(file
18、Path); /將數(shù)據(jù)存儲(chǔ)在將數(shù)據(jù)存儲(chǔ)在file中中 file.setFileName(fileName); try File f=new File(filePath,fileName); file.setFileLength(f.length(); FileReader in=new FileReader(f) ; BufferedReader inTwo=new BufferedReader(in); StringBuffer stringbuffer=new StringBuffer(); String s=null; while (s=inTwo.readLine()!=null) s
19、tringbuffer.append(n+s); String content=new String(stringbuffer); file.setFileContent(content); catch(IOException exp) RequestDispatcher dispatcher=request.getRequestDispatcher(showFile.jsp); dispatcher.forward(request, response); 在在MVC模式中,查詢記錄的任務(wù)由模式中,查詢記錄的任務(wù)由servlet對(duì)象負(fù)責(zé),對(duì)象負(fù)責(zé),bean僅僅負(fù)責(zé)存儲(chǔ)僅僅負(fù)責(zé)存儲(chǔ)servlet
20、對(duì)象所查詢到的記錄。對(duì)象所查詢到的記錄。 實(shí)例結(jié)構(gòu):實(shí)例結(jié)構(gòu):showRecord.jspShowRecordByPageDBConn 思考:MVC模式 怎樣應(yīng)用怎樣應(yīng)用MVC模式?模式?loginok.jsp login 登錄成功!登錄成功! 登錄失敗!登錄失敗! 數(shù)據(jù)庫(kù)操作失敗,請(qǐng)聯(lián)系管理員。數(shù)據(jù)庫(kù)操作失敗,請(qǐng)聯(lián)系管理員。 loginok.jsp思考:MVC模式 JSP+Servlet+JavaBean實(shí)現(xiàn)實(shí)現(xiàn)MVC模式模式 抽取表示層(抽取表示層(JSP) 抽取抽取“領(lǐng)域?qū)ο箢I(lǐng)域?qū)ο蟆?實(shí)現(xiàn)實(shí)現(xiàn)“控制層控制層”Servlet 抽取業(yè)務(wù)邏輯層接口抽取業(yè)務(wù)邏輯層接口 實(shí)現(xiàn)業(yè)務(wù)邏輯層實(shí)現(xiàn)業(yè)務(wù)邏
21、輯層 實(shí)現(xiàn)其他業(yè)務(wù)邏輯層(數(shù)據(jù)庫(kù)連接)實(shí)現(xiàn)其他業(yè)務(wù)邏輯層(數(shù)據(jù)庫(kù)連接)思考:MVC模式String username = request.getParameter(username);String pwd = request.getParameter(pwd);Dlb dl = new Dlb();dl.setXh(username);dl.setKl(pwd);CheckLoginDomainImpl dlDomain = new CheckLoginDomainImpl();if(dlDomain.checkLogin(dl)response.sendRedirect(./secondlo
22、ginok.jsp);elseresponse.sendRedirect(./secondloginfalse.jsp);public boolean checkLogin(Dlb dl) try DBConn conn = new DBConn();String sql = select * from dlb where ;ResultSet rs = conn.executeQuery(sql);if(rs.next() return true;else return false; catch (SQLException e) return false; private String id
23、;private String xh;private String kl;Dlb.javaCheckLoginDomainImpl.javaClass.forNameDriverManager.getConnectioncreateStatementexecuteQueryDBConn.java3839思考:MVC模式String username = request.getParameter(username);String pwd = request.getParameter(pwd);Dlb dl = new Dlb();dl.setXh(username);dl.setKl(pwd);
24、ICheckLoginDomain dlDomain = new CheckLoginDomainImpl();if(dlDomain.checkLogin(dl)response.sendRedirect(./secondloginok.jsp);elseresponse.sendRedirect(./secondloginfalse.jsp);ICheckLoginDomain接口接口public boolean checkLogin(Dlb dl) try DBConn conn = new DBConn();String sql = select * from dlb where ;R
25、esultSet rs = conn.executeQuery(sql);if(rs.next() return true;else return false; catch (SQLException e) return false; private String id;private String xh;private String kl;Dlb.javaCheckLoginDomainImpl.javaClass.forNameDriverManager.getConnectioncreateStatementexecuteQueryDBConn.java思考:MVC模式(改進(jìn))String username = request.getParameter(username);String pwd = request.getParameter(pwd);Dlb dl = new Dlb();dl.setXh(username);dl.setKl(pwd);ICheckLoginDomain dlDomain = LoginDomainFactor
溫馨提示
- 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025河北興冀人才資源開發(fā)有限公司招聘護(hù)理助理90人參考筆試題庫(kù)附答案解析
- 2025四川成都高新區(qū)婦女兒童醫(yī)院招聘技師、醫(yī)生助理招聘5人備考筆試題庫(kù)及答案解析
- 2026春季廣東廣州市天河區(qū)同仁藝體實(shí)驗(yàn)小學(xué)教師招聘6人參考考試試題及答案解析
- 2025年齊齊哈爾龍江縣中醫(yī)醫(yī)院招聘編外工作人員11人備考筆試題庫(kù)及答案解析
- 深度解析(2026)《GBT 25919.2-2010 Modbus測(cè)試規(guī)范 第2部分:Modbus串行鏈路互操作測(cè)試規(guī)范》
- 2025年福建師大泉州附中頂崗合同教師招聘3人參考考試試題及答案解析
- 深度解析(2026)GBT 25673-2010《可調(diào)節(jié)手用鉸刀》
- 2025中國(guó)醫(yī)學(xué)科學(xué)院醫(yī)學(xué)生物學(xué)研究所第二批招聘10人模擬筆試試題及答案解析
- 個(gè)人信息侵權(quán)精神損害賠償規(guī)則完善-基于法定賠償標(biāo)準(zhǔn)與司法傳統(tǒng)的沖突
- 2025貴州黎平肇興文化旅游開發(fā)(集團(tuán))有限公司招聘18人備考考試題庫(kù)及答案解析
- 環(huán)衛(wèi)安全隱患排查報(bào)告
- 海洋氣象數(shù)據(jù)同化技術(shù)創(chuàng)新
- 《光伏發(fā)電工程安全驗(yàn)收評(píng)價(jià)規(guī)程》(NB-T 32038-2017)
- 帶你聽懂中國(guó)傳統(tǒng)音樂(lè)智慧樹知到期末考試答案2024年
- 醫(yī)院檢驗(yàn)科個(gè)人述職報(bào)告
- 教改課題的選題與申報(bào)課件
- 2023年11月貴陽(yáng)人文科技學(xué)院下半年公開招聘53名專職教師筆試歷年高頻考點(diǎn)難、易錯(cuò)點(diǎn)薈萃附答案帶詳解
- 水質(zhì)分析儀安裝調(diào)試報(bào)告
- 在好的情緒里遇見更好的自己初中情緒管理主題班會(huì)-初中主題班會(huì)優(yōu)質(zhì)課件
- 教科版四年級(jí)上冊(cè)科學(xué)期末測(cè)試卷(含答案)
- 中國(guó)現(xiàn)當(dāng)代文學(xué)三十年框架圖
評(píng)論
0/150
提交評(píng)論