第九章——MVC
一、 教学内容
1. JSP编程模式
2. MVC模式简介
3. MVC主体结构
4. MVC的实现
5. 模型的生命周期与视图更新
6. MVC模式的简单实例
二、 教学目标
1. 理解MVC模型及其处理机制;
2. 初步掌握MVC的实现方法。
三、 教学重点及难点
1. 重点:MVC的处理模型及其生命周期;MVC模型的实现。
2. 难点:MVC模型的实现。
四、 教学方式与方法
演示讲解法,任务驱动法,案例教学法,问题探究法,与多媒体教学演示相结合
五、 实施教学
第一部分:新授课
一、 JSP编程模式
1.MODEL1单独使用JSP或JSP+JavaBean称为Model1或Model2。
一层架构模式(JSP);两层架构模式(JSP+JavaBean)
Model1中JSP页面响应请求并返回结果,同时充当视图和控制器,未能实现视图和业务逻辑完全分离,尽管十分简单但不适合开发大型应用程序,给网页设计和维护带来很多麻烦。
2.MODEL2
    JSP和Servlet可以一起使用来部署Web 应用。Servlet可以应付控制流,而 JSP 则可专注于编写HTML 的任务。在这种情况下,结合使用JSP和Servlet开发被称为Model2,Model2开发模式又叫做MVC开发模式。
由Servlet负责请求管理以及调用相关的业务逻辑,通过request.setAttribute方式与JSP通信,而JSP则通过Attribute方式获得所需要的Model信息,并最终显示在JSP页面上。这是最基本的MVC  Model2。这是一种责任的划分,以后的Struts、Spring MVC都是基于这样的理念。
3.MODEL1MODEL2的比较:
Model1 和 Model2 体系结构用于开发 Web 应用程序;
在 Model1体系结构中,JSP 页面单独负责开发 Web 应用程序;
Model1Web 应用程序由复杂的 Web 逻辑和指向 Web 应用程序中其他页面的链接组成;
Model1体系结构是一个很费时费力的过程;
Model1体系结构提供的安全功能也很有限;
为了克服 Model1体系结构的缺陷,引入了 Model2 体系结构。
二、 MVC模式简介
mvc的controller1.什么是MVC?  MVC(Model-View-Controller),即模型-视图-控制器。MVC是当前最为流行的Web开发模式,它把应用程序分成三个核心模块:模型、视图、控制器,它们各自处理自己的任务。
2. MVC体系结构包括的组件:
模型:包含核心功能和数据 (核心业务逻辑);视图:向用户显示信息(图形用户界面);控制器:处理用户输入。
3. MVC体系结构的功能划分:
首先控制器接收用户的请求,并决定应该调用哪个模型来进行处理;
然后模型根据用户请求进行相应的业务逻辑处理,并返回数据;
最后控制器调用相应的视图格式化模型返回的数据,并通过视图呈现给用户。
4. MVC体系结构的优点:
将人机交互从核心功能中分离出来(M)
模型对用户来说是透明的,用户只需要观察视图(V)
用户与模型的交互通过控制器提供的安全方法来实现(C)
三、 MVC主体结构
1. MVC组件类型的关系和功能(如右图)
2. Model  模型(封装数据)
(1)功能:
封装内核功能和数据
业务逻辑(软件的核心)
数据以及访问它们的函数(视图组件使用)
执行特定应用程序处理的过程(控制器代表用户调用)
模型对于用户来说是不可见的(M与V独立)
模型独立于特定输出表示或者输入方式(M与C独立)
用户只能通过控制器操作模型(C是M与V之间的桥梁)
    Model代表了某应用程序的核心功能,负责处理用户的数据,实现业务逻辑。同时,模型还为视图的显示提供数据,并可被多个视图所共享。
()功能原理:
一个模型维护了一张表;
模型的变更使得视图和控制器都会收到变更通知;
所有视图还有一些控制器在这个表中登记了对变更通知的需求;
模型状态的改变将触发变更-传播机制,将其每个改变登记在表中;
()变更传播机制:
一个模型可对应多个视图
如果用户通过一个视图的控制器改变了模型中的数据,那么依赖于该数据的其他视图也应反映出这样的变化;
一旦模型的数据发生了变化,模型需要通知所有相关的视图做出相应的变化。
维护数据的一致性
3. View  视图
(1)功能:
向用户显示信息:不同的视图使用不同的方法呈现信息
从模型获得数据:通过状态查询函数实现,例如:定时刷新
  主要指与用户交互的界面,即应用程序的外观。它只负责将数据转交给控制器;同时还负责展示模型传递给用户的数据,当后台模型更新数据时,视图也应随之更新。
4. Controller 控制器
(1)功能:
每个视图有一个相关的控制器组件(一一对应)
控制器组件接受事件,并翻译成输入
事件如何发送到控制器由用户界面平台决定
事件被翻译成为对模型或者视图的请求,例如用户点击按钮,按钮的事件响应函数将采取相应的措施处理用户要求
用户仅仅通过控制器与系统交互改变数据,改变模型的状态
负责接收用户的请求和数据,然后做出判断将请求和数据交到哪一个模型来处理,最后调用视图来显示模型返回的数据。
注意:
视图与控制器是一一对应的关系
模型与视图是一对多的关系
变更-传播机制保持模型与视图、控制器之间状态的一致性
四、 MVC的实现
. 设计并实现模型组件(M)
封装内核所需要的数据和功能
确定模型的哪一部分应该通过控制器向用户显示,提供访问待显示数据的功能
实现核心业务逻辑
使用JavaBean来实现
模型:一个或多个Javabean对象,是真正完成任务的代码。在模型界面相分离的情况下,代码即可实现可管理性和可重用性。
2. 设计并实现视图(V)
设计视图的外观,并实现画图过程来将视图显示在屏幕上(需要使用用户界面平台的功能)
使用JSP来实现
视图:就是用户使用的界面,视图(界面)不处理数据,界面的每一部分都只能包含采集数据的足够逻辑,并把它传递给设计模式中的其他组成部分进行处理。一个或多个JSP页面,主要使用HTML标记和Javabean标记向控制器提交必要的数据和为模型提供数据显示(getXXX方法的使用)。
3. 设计并实现控制器(C)
对于每个视图,指定回应用户动作的系统行为
控制器用一个专用的过程来接受并且解释这些用户动作(事件)
实现事件响应函数
使用Servlet来实现
控制器:一个或多个servlet对象,获取视图提交的数据进行处理,利用Javabean方法存储数据,使用重定向方式请求视图中的某个JSP页面更新显示。控制器控制模型和视图之间的交
互过程。它决定着向用户返回哪个视图、检查通过界面输入的信息以及选择处理输入信息的模型。
等差数列的公式:s=a+(a+d)+……a(n–1)*d
等比数列的公式:s=a+(a*q)+……a*qn–1
五、 模型的生命周期与视图更新
控制器servlet接受请求,负责创建Javabean处理数据,并存储数据到bean中;JSP页面获取bean的数据进行显示。
思考:JSP中的usebean动作不创建bean,这个工作由servlet来承担,JSP的任务是——指定一个具体的bean,通过getXXX方法完成数据显示。
问题:在servlet中创建的bean如何与JSP中所指定的那个具体的bean衔接起来?
解决:将servlet中创建的bean存储起来,并传递到JSP中,使它在JSP中有效。
新的问题:存储到哪里?如何传递?
有两个问题要解决:
    ⒈存储到哪里?——存储到内置对象中去。    进而涉及到Javabean的生命周期的问题。
    ⒉如何传递?——在servlet中进行数据转发。
request周期的Javabean:在一次请求页面中有效。
⒈在servlet端创建Javabean
①创建beanz:  CreatJavabeanClass bean=new CreatJavabeanClass();
②存储bean到request对象中:  request.setAttribute(“keyWord”,bean);
2.servlet端转发请求到JSP页面
  目的:将存储到request中的Javabean传递到下一个处理页面,使它在更新视图中有效,从而通过bean方法得到目的数据。
  思考:为什么是转发,而不是重定向?(参考教材P232)
  步骤:①RequestDispatcher dispatcher= RequestDispatcher(“show.jsp”);
②dispatcher.forward(request,response);   
3.JSP端更新视图
方法1:①引用Javabean:<jsp:useBean id=“keyWord”    type=“urbean.CreateJavabeanClass”  scope=“request”/>
②获取Javabean数据,进行视图更新:<jsp:getProperty name=“keyWord” property=“bean变量”/>
方法2:①引用Javabean:<%  CreatJavabeanClass  bean =  (Attribute(“keyWord”); %>
②获取Javabean数据,进行视图更新:    <%=XXX()%>
session周期的Javabean:在用户会话期间始终有效。
⒈在servlet端创建Javabean
①创建bean:  CreatJavabeanClass bean=new CreatJavabeanClass();
②存储bean到session对象中:HttpSession Session(true);  session.setAttribute(“keyWord”,bean);
2.servlet端传递JavabeanJSP页面
方法1:转发请求(同上):①RequestDispatcher RequestDispatcher(“show.jsp”);

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。