《基于Servlet的MVC模式.ppt》由会员分享,可在线阅读,更多相关《基于Servlet的MVC模式.ppt(41页珍藏版)》请在三一办公上搜索。
1、第9章 MVC模式,课程目标,理解MVC模式的基本思想视图模型控制器能够运用MVC模式编写Web应用程序,引入,MVC模式的核心思想是有效地组合“视图”、“模型”和“控制器”。掌握MVC模式对于设计合理的Web应用框架有着十分重要的意义。,1.MVC模式介绍,JSP开发的两种模型(Model1/Model2)模型1使用JSP+JavaBeans将页面显示和业务逻辑处理分开JSP实现页面显示,响应请求并将结果返回给客户JavaBean对象保存数据和实现业务逻辑,模型1的架构示意图,模型1的实例(详细),按照模型1编写一个用户登录验证的程序分析页面:login.html:登录主页面;loginer
2、r.jsp:登录错误页面welcome.jsp:登录成功页面loginchk.jsp:创建数据对象,保存用户登录信息;调用方法进行验证;验证通过,转发至welcome.jsp,否则loginerr.jsp,请求重新登录,数据保存和处理UserBean.java:保存用户登录信息,向JSP页面传递信息;UserCheckBean.java:对用户名和密码进行验证;完成登录验证功能的主要业务逻辑;,UserBean.java,public class UserBean private String name;private String password;,UserCheck,public cla
3、ss UserCheckBean protected UserBean user;public UserCheckBean(UserBean user)this.user=user;.public boolean validate()String name=user.getName();String password=user.getPassword();/实际应用中,你应该查询数据库,验证用户名和密码。if(张三.equals(name),loginchk.jsp,模型1分析,优点:实现了页面显示与业务逻辑的分离缺点需要在JSP页面控制流程转向并且调用JavaBean代码业务逻辑复杂时,JS
4、P编写变得复杂总结:简单的小型应用,可以使用,1.MVC模式介绍,模型2将模型1中JSP嵌入的流程控制和部分逻辑处理代码提取至一个单独的角色:控制器模型2是MVC架构模式在WEB开发中的应用,1.MVC模式介绍,MVC是一种设计模式,由Trygve为发展SmallTalk在1978年提出的,出现在GUI设计中。MVC按功能对各种对象进行分割,目的是为了将对象的耦合程度降至最低。,1.MVC模式介绍,MVC是一种通过3个不同部分构造一个软件或组件的理想办法:模型(Model)封装了最核心的功能,用于存储数据以及处理用户请求的业务逻辑。视图(View)系统和用户交互的界面,从模型那获得数据并表现数
5、据,同时将用户请求通知通知器。控制器(Controller)扮演调度者的角色,即控制器根据视图提出的请求判断将请求和数据交给那个模型处理,处理后的有关结果交给哪个视图更新显示,2.JSP中的MVC模式,模型(Model):一个或多个JavaBean对象,用于存储数据和处理数据;视图(View):一个或多个JSP页面,为模型提供数据显示,JSP页面主要使用 HTML标记和JavaBean标记来显示数据。控制器(Controller):一个或多个Servlet对象,根据视图提交的请求进行控制,生成JavaBean实例输出给JSP页面.,模型2的架构示意图,模型2的实例,按照模型2的架构重写用户登录
6、验证程序分析:login2.html:登录主页面;由ControllerServlet来接收请求ControllerServlet.java:接收用户登录请求信息,调用JavaBean组件对其进行验证,并根据结果调用JSP页面返回客户端,login2.html,用户名:密码:,ControllerServlet.java,String action=request.getParameter(action);/验证请求合法性 if(!isValidated(request),ControllerServlet.java,if(login.equals(action)UserBean user=n
7、ew UserBean();user.setName(request.getParameter(name);user.setPassword(request.getParameter(password);UserCheckBean uc=new UserCheckBean(user);if(uc.validate(),3.模型的生命周期与视图更新,由Servlet负责创建JavaBean,并将JSP页面发送的相关数据存储到JavaBean中Servlet请求的某个JSP页面显示JavaBean的数据,3.1 request周期的JavaBean,用CreateJavaBeanClass类的某个
8、构造方法创建Javabean对象,例如:CreateJavaBeanClass bean=new CreateJavaBeanClass();将所创建的JavaBean对象存放到HttpServletRequest对象request中,并指定查找该JavaBean的关键字,例如:request.setAttribute(keyWord,bean);,视图更新,Servlet请求JSP页面的代码RequestDispatcher dis=request.getRequestDispatcher(“/show.jsp”)dis.forward(request,reponse);JSP页面使用如下标
9、记获得Servlet所创建的JavaBean的引用:显示具体数据:jsp:getProperty name=keyWord property=“JavaBean的变量”,3.2 session周期的JavaBean,用CreateJavabeanClass类的某个构造方法创建JavaBean对象,例如:CreateJavaBeanClass bean=new CreateJavaBeanClass();将所创建的JavaBean对象存放到HttpServletSession对象session中,并指定查找该JavaBean的关键字,例如:HttpSession session=request.
10、getSession(true);session.setAttribute(keyWord,bean);,视图更新,JSP页面使用如下标记获得Servlet所创建的JavaBean的引用:,3.3 application周期的JavaBean,用CreateJavaBeanClass类的某个构造方法创建JavaBean对象,例如CreateJavaBeanClass bean=new CreateJavaBeanClass();Servlet使用getServletContext()方法返回服务器创建的ServletContext对象的引用,将所创建的JavaBean对象存放到ServletC
11、ontext对象中,并指定查找该JavaBean的关键字,例如:getServletContext().setAttribute(keyWord,bean);,视图更新,JSP页面使用如下标记获得Servlet所创建的JavaBean的引用:,实例,计算三角形面积四则运算查询数据库,计算三角形面积,题目:输入三角形三条边的长度,计算并显示三角形的面积。设计分析:界面JSP:输入三条边(input.jsp),显示三角形面积(show.jsp)模型JavaBean:(Triangle.java)判断三条边是否能组成三角形,计算三角形面积控制器Servlet:从input.jsp接收三条边输入的数据
12、,创建响应的JavaBean实例,验证输入合法性后再计算三角形面积结果发给show.jsp思考:如果输入比较复杂,验证合法性工作怎么处理比较好?(从功能上考虑),Triangle.java,public class Triangle double sideA,sideB,sideC;/三角形三边 double area;/面积 boolean isTriangle;/是否构成一个三角形,Triangle.java,/*计算三角形面积,如果可以构成三角形,返回面积,否则返回0*/public double getArea()return Area;/*判断三边是否构成一个三角形*/public
13、boolean getIsTriangle();return isTriangle;,HandleData.java,public void doPost()Triangle tri=new Triangle();/创建Javabean对象 request.setAttribute(triangle,tri);/将tri存储到HttpServletRequest对象中。/获取三边的值并存放在tri对象中 tri.getArea();/调用getArea()方法计算三角形面积RequestDispatcher dispatcher=request.getRequestDispatcher(/sh
14、ow.jsp);dispatcher.forward(request,response);/请求show.jsp显示tri中的数据,show.jsp,三角形的三边是:边A:边B:,练习,将P92页第五章猜数游戏改成MVC模式,四则运算,题目:计算两个数的四则运算分析视图:输入两个数和运算符号页面(inputNumber.jsp)显示计算结果页面(showResult.jsp)模型:存储运算数、符号、计算运算结果并返回(ComputerBean.java)控制器:获取用户输入,存放于相应的javaBean中,获取结果并返回给显示页面,查询数据库,题目:选择一个数据库的表,分页显示表的记录。分析设
15、计:页面:选择数据库、表、分页显示页数(choiceDatabase.jsp)显示数据库表的记录(showRecord.jsp)控制器:接收用户数据,创建相应的bean存放数据中,获取分页显示结果发送给showRecord.jsp模型:showRecordPage.java将查询的结果进行分页显示结果,Database.java,根据数据库、表返回查询结果。,MVC模式的今天,Structs:Apache软件基金下Jakarta项目的一部分。Struts框架的主要架构设计和开发者是Craig R.McClanahan Webwork 其他框架SpringHibernateAjax:Asynch
16、ronous JavaScript and XML,测验,编写一个Servlet,简单的显示“欢迎您访问本网站”的Servlet(注意中文显示),保存为helloworld.java 创建Servlet的类是tom.jiafei,应该如何配置它才能运行?,练习题5,不同作用范围的JavaBean的生命周期有什么不同?作为一个Java类,JavaBean一般需要符合什么条件?在JSP页面使用bean的标记是?其中涉及的三种属性的含义?简单叙述javaBean的工作原理?如果在javaBean的属性aa中没有getAa()方法,那么在jsp中可以用getProperty的标记形式获取属性aa的值吗?为什么?写出三种在JSP中设置bean属性的方式?书上习题,练习题6,什么是输入流?什么是输出流?列举出常见的文件输入输出流。如何读取文件?写出关键语句如何写入文件?写出关键语句RandomAccessFile的主要特点?如何列出指定目录fileDir下的所有文件?,练习题9,简述MVC的基本思想书上习题,