第九章 MVC模式_第1页
第九章 MVC模式_第2页
第九章 MVC模式_第3页
第九章 MVC模式_第4页
第九章 MVC模式_第5页
已阅读5页,还剩74页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、2 2 23 主要内容主要内容 MVC模式介绍模式介绍 JSP中的中的MVC模式模式 模型的生命周期与视图更新模型的生命周期与视图更新 MVC模式的简单实例模式的简单实例 MVC模式与文件操作模式与文件操作 MVC模式与数据库操作模式与数据库操作 MVC模式与注册登录模式与注册登录 难点难点 模型的生命周期与视图更新模型的生命周期与视图更新 MVC模式与注册登录模式与注册登录 关键实践关键实践 计算数列之和计算数列之和4 MVC模式的核心思想是有效地组合模式的核心思想是有效地组合“视图视图”、“模型模型”和和“控制器控制器”。 本章将介绍本章将介绍MVC模式,掌握该模式对于设计合理的模式,掌握

2、该模式对于设计合理的Web应用框架有着十分重要的意义。应用框架有着十分重要的意义。5 Model I 体系结构结合使用体系结构结合使用 JSP 页面和页面和 JavaBean 来开来开发发 Web 应用程序应用程序请求 应用服务器响应JSP页面页面JavaBean数据库服务器6请求 应用服务器响应JSP页面页面JavaBeanServlet数据库服务器789 MVC是一种通过三个不同部分构造一个软件或组件的理是一种通过三个不同部分构造一个软件或组件的理想办法:想办法: 模型(模型(Model)用于存储数据的对象。用于存储数据的对象。 视图(视图(View)为模型提供数据显示的对象。为模型提供数

3、据显示的对象。 控制器(控制器(Controller)负责具体的业务逻辑操作,即负责具体的业务逻辑操作,即控制器根据视图提出的要求对数据做出处理,并将有关结控制器根据视图提出的要求对数据做出处理,并将有关结果存储到模型中,同时负责让模型和视图进行必要的交互,果存储到模型中,同时负责让模型和视图进行必要的交互,当模型中的数据变化时,让视图更新显示。当模型中的数据变化时,让视图更新显示。101112 课本中的描述课本中的描述 在在JSP中,中,“视图视图”、“模型模型”和和“控制器控制器”的具体实现的具体实现如下:如下: 模型(模型(Model):): 一个或多个一个或多个JavaBean对象,用

4、于存储数据,对象,用于存储数据,JavaBean主要主要提供简单的提供简单的setXXX()方法和方法和getXXX()方法,在这些方法中不方法,在这些方法中不涉及对数据的具体处理细节。涉及对数据的具体处理细节。 视图(视图(View):): 一个或多个一个或多个JSP页面,为模型提供数据显示,页面,为模型提供数据显示,JSP页面主要页面主要使用使用 HTML标记和标记和JavaBean标记来显示数据。标记来显示数据。 控制器(控制器(Controller):): 一个或多个一个或多个Servlet对象,根据视图提交的要求进行数据处理对象,根据视图提交的要求进行数据处理操作,并将有关的结果存储

5、到操作,并将有关的结果存储到JavaBean中,然后中,然后Servlet使使用重定向方式请求视图中的某个用重定向方式请求视图中的某个JSP页面更新显示。页面更新显示。13 模型(模型(Model)1415 JSP中的中的MVC模式模式16 在在JSP中的中的MVC模式中,由控制器模式中,由控制器servet负责创建负责创建Javabean,并将有关数据存储到所创建的,并将有关数据存储到所创建的Javabean中,中,然后然后servlet请求某个请求某个JSP页面使用页面使用Javabean的的getProperty动作标记:动作标记: 显示显示Javabean的中的数据。的中的数据。 在在

6、JSP中的中的MVC模式中,模式中,servet创建的创建的Javabean也涉及到也涉及到生命周期,生命周期分为生命周期,生命周期分为request、session和和application。 以下假设创建以下假设创建Javabean的类的名字是的类的名字是BeanClass,该类,该类的包名为的包名为user.yourbean。17 1Javabean的创建的创建 2视图更新视图更新 servlet请求一个请求一个JSP页面页面 JSP页面使用如下标记获得页面使用如下标记获得Servlet所创建的所创建的JavaBean的引用的引用 : JSP页面使用如下标记显示页面使用如下标记显示bea

7、n中的数据。中的数据。 RequestDispatcher dispatcher= request.getRequestDispatcher(show.jsp);dispatcher.forward(request,response); BeanClass bean=new BeanClass(); request.setAttribute(keyWord,bean);18 1Javabean的创建的创建 2视图更新视图更新 一个用户在访问一个用户在访问Web服务目录的各个服务目录的各个JSP中都可以使用中都可以使用如下标记获得如下标记获得servlet所创建的所创建的bean的引用的引用 B

8、eanClass bean=new BeanClass(); HttpSession session=request.getSession(true);session.setAttribute(keyWord,bean); 19 1Javabean的创建的创建 2视图更新视图更新 一个用户在访问一个用户在访问Web服务目录的各个服务目录的各个JSP中都可以使用中都可以使用如下标记获得如下标记获得servlet所创建的所创建的bean的引用的引用 BeanClass bean=new BeanClass(); getServletContext().setAttribute(keyWord,be

9、an); 20 计算三角形和梯形的面积:存放数据的模型计算三角形和梯形的面积:存放数据的模型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 计算三角形和梯形的面积:控制器计算三角形和梯形的面积:控制器public class HandleArea extends HttpServlet public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException Area dataBean=new Area(); /创建创建Javabean对象对象

11、 request.setAttribute(data,dataBean);/将将dataBean存储到存储到request对象中对象中 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,resp

13、onse); public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException 22 计算三角形和梯形的面积:控制器计算三角形和梯形的面积:控制器 computerArea user.yourservlet.HandleArea computerArea /lookArea23 计算三角形和梯形的面积:视图计算三角形和梯形的面积:视图 三角形:三角形: 输入边输入边A: 输入边输入边B: 输入边输入边C: 梯形:梯形: 输入上底输入上底:

14、输入下底输入下底: 输入高输入高: 24 计算三角形和梯形的面积:视图计算三角形和梯形的面积:视图 : 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);RequestDispatc

15、her dispatcher = 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 调用顺序调用顺序showResult.jspArea AreaService 在在MVC模式中,读取

16、文件的工作由模式中,读取文件的工作由servlet对象负责,对象负责,bean仅仅负责存储仅仅负责存储servlet对象所读取的文件内容。对象所读取的文件内容。 输入文件的路径输入文件的路径(如如:d:/2000): 输入文件的名字输入文件的名字(如如:Hello.java): 文件的名字:文件的名字:,文件的内容:文件的内容: public class FileMessage String filePath; String fileName; String fileContent; long fileLength; /省略省略getter和和setter方法方法public class Ha

17、ndleFile extends HttpServletpublic void doPost(HttpServletRequest request,HttpServletResponse response) FileMessage file=new FileMessage(); /创建创建Javabean对象对象 request.setAttribute(file,file); String filePath=request.getParameter(filePath); String fileName=request.getParameter(fileName); file.setFileP

18、ath(filePath); /将数据存储在将数据存储在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()!

19、=null) stringbuffer.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模式中,查询记录的任务由模式中,查询记录的任务由servlet对象负责,对象负责,bean仅仅负责存储仅仅负责存

20、储servlet对象所查询到的记录。对象所查询到的记录。 实例结构:实例结构:showRecord.jspShowRecordByPageDBConn 思考:MVC模式 怎样应用怎样应用MVC模式?模式?loginok.jsp login 登录成功!登录成功! 登录失败!登录失败! 数据库操作失败,请联系管理员。数据库操作失败,请联系管理员。 loginok.jsp思考:MVC模式 JSP+Servlet+JavaBean实现实现MVC模式模式 抽取表示层(抽取表示层(JSP) 抽取抽取“领域对象领域对象” 实现实现“控制层控制层”Servlet 抽取业务逻辑层接口抽取业务逻辑层接口 实现业务

21、逻辑层实现业务逻辑层 实现其他业务逻辑层(数据库连接)实现其他业务逻辑层(数据库连接)思考: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(./

22、secondloginok.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 S

23、tring id;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.set

24、Kl(pwd);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

25、where ;ResultSet 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模式(改进)String username = request.getParameter(username);String pwd = request.getParameter(pwd);Dlb dl = new Dlb();dl.setXh(username);dl.setKl(pwd);ICheckLoginDomain dlDomain = LoginDomainFacto

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论