JSP开发--MVC模式(三)
- MVC(Model-View-Controller)模式,即模型-视图-控制器模式
- MVC1和MVC2模式
- JSP+JavaBean+Servlet实现MVC
一:MVC(Model-View-Controller)模式
MVC模式把交互系统的组成分解成模型(Model)、视图(View)、控制器(Controller)三种部件。它强制性地使应用程序的输入、处理和输出分开
模型(Model)部分:是软件所处理问题逻辑在独立于外在显示内容和形式情况下的内在抽象,封装了问题的核心数据、逻辑和功能的计算关系,它独立于具体的界面表达和I/O操作。
视图(View)部分:是表示模型数据及逻辑关系和状态的信息及特定形式展示给用户。它从模型获得显示信息,对于相同的信息可以有多个不同的显示形式或视图。
控制器(Controller)部分:是用来处理用户与软件的交互操作的,其职责是控制提供模型中任何变化的传播,确保用户界面于模型间的对应联系;它接受用户的输入,将输入反馈给模型,进而实现对模型的计算控制,是使模型和视图协调工作的部件。通常一个视图具有一个控制器
二:MVC1和MVC2模式
MVC模式在具体的应用中,又分为MVC1和MVC2模式
(1)MVC1模式
- View接受用户输入,并传递到Controller;
- Controller统一进行处理命令,交由Model处理具体的业务;
- 经过处理Model更新后,通知View进行更新
这种模式主要用于桌面程序,使用观察者模式实现,具体来说就是让View观察Model,而用户交互控制的地方用匿名类的方式统一放在Controller中。像MFC的frame-document-view架构,如果document改变了,它会主动通知View进行update
但是在WEB应用程序中,Model(在Java中通常是JavaBean)的数据更新后,无法通知View进行更新(View在Java中通常是非常多JSP页面,需要选择一个),因此,在WEB应用程序中应该使用下面这种模式:MVC2模式
(2)MVC2模式
View接受用户输入,并传递到Controller。 Controller统一进行处理命令,交由model处理具体的业务。 经过处理的Model更新后,Controller会选一个View并把Model内容传递(request、session)给它(forward)。然后View进行显示。 分析上述两个图,知MVC1和MVC2模式的主要差别就是Model是否能主动通知View。
桌面程序可以实现,所以选择MVC1模式;Web程序由于Http协议的限制无法实现;所以选择MVC2模式。 模型、视图与控制器的分离,使得一个模型可以具有多个显示视图。如果用户通过某个视图的控制器改变了模型的数据,所有其它依赖于这些数据的视图都应反映到这些变化。因此,无论何时发生了何种数据变化,控制器都会将变化通知所有的视图,导致显示的更新。这实际上是一种模型的变化-传播机制
三:JSP+JavaBean+Servlet实现MVC
所有的操作都会调用service这个接口,然后调用javaBean操作数据库。要想实现MVC,最重要的是Web资源包装器RequestDispatcher,由它解决输出和跳转的问题,它将javaBean的处理结果交给JSP(java Server Page),JSP将根据javaBean的指示将内容输出。Servlet负责将所有的一次性显示的内容交给JSP完成,那么最合适的属性作用域就是request作用域,因为选择属性作用域优先级从大到小分别是:page(pageContext)、request、session、application
用户通过提交Requests与Controller组件(通常表现为Servlets)交互。接着Controller组件实例化Model组件(通常 表现为JavaBeans或者类似技术),并且根据应用的逻辑操纵它们。一旦Model被创建,Controller决定下一个为用户显示的View(常常表现为JSP),同时View从Controller获得Model并为用户显示相关数据
MVC模式中各组件具体职责如下:
1.JavaBean(Model)的职责
- 封装数据——值JavaBean
- 封装业务——工具JavaBean
2.Servlet(Controller)的职责
- 控制流程,接受请求参数,调用JavaBean,获取结果数据,并将数据存储在某个作用域范围之中,最后选择页面显示
3.JSP(View)的职责
- 获取Servlet存储在某个作用域之中的数据,进行显示
四:开发步骤(不是绝对的,只是作一个参考)
MVC模式开发主要步骤:
步骤一:开发JavaBean来表示数据和业务;
步骤二:通过Servlet处理请求,读取请求参数;
步骤三:Servlet调用JavaBean,实现业务逻辑,获取结果数据;
步骤四:Servlet调用请求、会话等对象的setAttribute方法,将结果数据存储在某个作用域范围之中;
步骤五:Servlet选择合适的JSP页面,通过RequestDispatcher的forward方法跳转至该页面;
步骤六:JSP页面获取Servlet存储的结果数据,进行展示。
以上步骤没有包含JSP页面开发,步骤中的操作并非绝对化。比如:【步骤5】中的跳转方法,Servlet跳转至JSP的最常用方法是RequestDispatcher.forward,有时也用到response.sendRedirect,两种方法有所区别
JSP开发--MVC模式(三)相关推荐
- jsp的MVC模式设计用户登陆注册
jsp的MVC模式设计用户登陆注册 用户登陆功能 1.实验内容 2.实验步骤 3.实验结果 4.实验分析 用户登陆功能 通过设计用户的登陆和注册,来学习jsp的MVC模式,熟练掌握MVC模式各部分的内 ...
- JSP的MVC模式(JavaBean、Servlet、JSP)
JSP的MVC模式中,Model=JavaBean,View=JSP,Controller=Servlet. 简而言之:JavaBean用于存储数据,JSP用于显示页面,Servlet用于处理数据(脏 ...
- 小汤学编程之JavaEE学习day03——JSP组成结构、JSP原理、JSP生命周期、JSP九大内置对象、四大作用域、JSP的MVC模式
一.JSP组成结构 二.JSP的原理 1.JSP的运行原理 2.分析JSP所生成的Servlet代码 3.JSP的执行过程 三.JSP生命周期 四.JSP九大内置对象 五.JSP四大作 ...
- SAP web 开发 (第二篇 bsp 开发 mvc模式 Part1 )
Model-View-Controller 简称MVC. 简单的说就是把数据处理,显示,页面事件及处理过程分离开来,企业应用多数都采用这种方式,多层架构的优缺点不再多言,google一下啥都知道. 在 ...
- 用jsp的mvc模式的新闻发布系统_短视频防青少年沉迷系统 一切全凭“自觉”靠得住吗...
一个时代有一个时代的代表,一个时代最火的代表是什么,看看孩子们在追逐什么就知道了.都说青少年时期不定形,容易朝三暮四,其实一旦一件事物触碰到孩子们敏感且好奇的神经,往往可以让孩子们沉迷其中无法自拔. ...
- 用jsp的mvc模式的新闻发布系统_网易内部倡导用昵称代替哥姐总等称呼;TCL大股东误操作卖出500万股;Ant Design 4.6.2 发布| 极客头条...
整理 | 屠敏 头图 | CSDN 下载自东方 IC 快来收听极客头条音频版吧,智能播报由出门问问「魔音工坊」提供技术支持. 「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极 ...
- 用jsp的mvc模式的新闻发布系统_【利元亨 | 新品】柯马智能柔性激光焊接站震撼发布...
高工机器人CEO圈群招募中,欢迎感兴趣的朋友们加微信号:13632944360入群:添加微信时请备注单位-姓名-职务,通过审核后我们将邀请进群. 7月3日,柯马智能柔性激光焊接站在上海新国际展览中心震 ...
- 用jsp的mvc模式的新闻发布系统_海鸥模式:创新文旅融合 促进消费升级
人民网济南11月24日电(谈媛)11月18日,"海鸥模式战略合作发布会"在山东新闻大厦新闻大会堂成功举办.活动现场,百家企业签约"海鸥模式"战略合作单位,共同发 ...
- SAP web 开发 (第二篇 bsp 开发 mvc模式 Part2 )
单击第一个图标,第一个图标突出显示,单击第二个图标,第一个变灰,第二个突出显示,反之一样.单击history读取历史记录. Controller ZCL_SUS_C_ORDER_CHANGE 1. ...
最新文章
- 项目延期半年,我被软件外包坑惨了!
- MySQL外键约束On Delete、On Update各取值的含义
- python爬虫赚钱途径-如何利用python爬虫挣钱
- 【转】Android编码规范建议18条
- Eclipse VIM
- 不吹不黑,赞一下应用运维管理的cassacdra
- plc tcp ip通讯怎么只能连一个客户端_浅谈西门子plc的profinet功能的开放式通信功能...
- 热插拔服务器电源维修,无需关停系统即可热插拔,TE Connectivity推出滑轨电源连接器...
- 嵌入式Linux安装Python环境,linux环境下安装python 3
- mac bash file密码_MAC 常用命令汇总
- c语言图书馆管理系统(功能非常之多)
- JZOJ1728. Antimonotonicity
- 【Mockplus教程】安装Mockplus
- Python爬虫入门教程 7-100 蜂鸟网图片爬取之二
- 小程序、APP、企业网站开发工具有哪些?如何使用软件开发工具?
- 骁龙865与鸿蒙900,天玑2000与骁龙865哪个好_天玑2000与骁龙865对比
- bash grep 判断_bash 退出状态与条件判断
- 小游戏:HelloColor
- 数据库 之数据库设计浅知识 -- 设计概述、概念结构设计(E-R模型概述)、逻辑结构设计(函数依赖和范式)、物理结构设计
- 奥运会国家队都是什么神仙颜值啊!Python带你来揭秘!真的超美!
热门文章
- PyCharm中的问题记录:failed to sync ide settings. click to sync
- 同程艺龙通过港交所上市聆讯 要冲刺小程序第一股
- python装饰器抽丝拨茧
- 移动广告SDK测试思路
- Atmel跑Linux的arm芯片,linux下烧写atmel芯片
- ATTCK v12版本战术介绍持久化(三)
- 5G SA的网络架构和关键技术
- 成都盛迈坤电商:评价怎么有效回复
- 微信小程序 家校通 中小学家校联系电子作业系统
- SpringBoot如何自定义启动的Banner 在线生成SpringBoot启动的Banner工具 如何使用在线生成工具生成的SpringBoot的Banner