MVC框架实现原理是一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。
MVC指MVC模式的某种框架,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。最典型的MVC就是JSP加servlet 加 javabea
MVC : Model - View - Control 分别代表模型, 视图,控制器。
MVC 只是一个编程分层的概念,并不是什么编程技术,你用ASP,PHP,JAVA,.NET 都可以实现。
其中M 与数据库打交道,封装数据操作,只提供接口给 C
C 是路由控制器,负责程序的来龙去脉动,连接 M 与 V
V 是视图,负责接收C传过来的参数并显示给用户
MVC 只要你写好M,C,用模板技术,如 SMARTY 分离出数据与模板即是一个简单的 MVC 框架,我本身也有写 MVC 框架,前后台分离,但共用类库,M与C 都写在共用的文件夹里,统一调用,前后台有各自的V,用SMARTY 分离实现,多模板,多语言切换
关于昨天mvc说到是框架,但是不知道你们发现没有这里说的框架和我们平时说的框架比如spring框架,sturts框架等等,感觉有什么不对劲。可以在知乎里面看一下,mvc是否是设计模式。
这里不过多讨论,毕竟笔主目前也没有参加过什么项目,只是自己做几个不入流小系统。《设计模式》那本书,我也还没有看。所以我妄下结论。
虽然没有学过这么多更深层次的东西,但是毕竟我们还是要继续学习,马士兵老师也说了一些,不要往一个点深究(当然有时间,想这些还是有很多好处的)。因为这样学习,进度会十分缓慢。
借视频里面的图让我们来说一说mvc在bs系统下的运行过程
1.用户发出请求到控制器(如果有过滤器另说~废话真多23333)。
2.控制器接收到请求以后,控制器会请求模型让它去处理。
3.模型处理完数据以后,就会将请求结果响应回控制器。
4.控制器接受到模型处理后的数据,就会将数据渲染到视图里面。
5.然后将视图响应给用户。
这就是比较传统的步骤。当然如果前端用的是静态页面,用ajax请求,响应给浏览器,那怎么渲染?我就不清楚(毕竟前端学的还是不行),懂得可以在讨论区说一下,还有怎么测试ajax请求?
springmvc的运行原理
视频截屏截不完,所以我在网上找了一张图。
这图将步骤过程描述了出来。
我在重新整理一遍过程。
1.用户发出请求,但是目的地不同虽说都是控制器,但是springmvc里面是叫前端控制器。
2.前端控制器向处理处理映射器映射器发出请求,这一步和原来的mvc有所区别。这里因为初学,个人推测是不是url里面比如login.jsp和Login.jsp都是找到LoginController。在servlet的时候是通过注解和xml文件配置实现(注意这里是个人臆测)。在这里加入处理器映射器可能又多了一些操作,看后面学习分解。
3.然后返回的是一个执行链,其中包括我们需要的handler处理器(其实就是以前的controller),拦截器1,拦截器2等等。执行链本身就是个包装类,包装了上面的一些属性。
4.前端控制器根据返回的执行链,请求handler适配器执行handler。
5.handler执行完了以后,会返回模型和视图和视图给前端控制器(这里的视图和最终显示的视图还是有区别的)。
6.前端控制器将返回来的模型和视图给视图解析器。
7.视图解析器将视图解析成真正的视图(怎么换的?)
8.视图解析器将view返回给前端控制器。
9.前端控制器将model数据渲染到视图里面,然后响应给浏览器。
虽然自己写的和图步骤编号不同,但是内容步骤是一样的。
这里有几点问题
1.处理器映射器返回回来的执行链里面的拦截器是什么时候执行的?
2.handler适配器,是怎么选择handler的?
3.返回的model是在哪里真正执行的?
handler里面执行的,然后将数据存入modelandview里面
有想法可以在下方一起讨论。
m代表model模型,v代表view视图,c代表controller,控制器。m中包含你写的业务逻辑,就是取数据的模型,v代表你显示的视图,c来控制m和v之间的关系。mvc的运行原理基本一样没有什么不一样的地方,只是不同的mvc框架的实现技术不一样吧了。接下来...
现在的PHP框架太多了,如yii codeigniterlaravel thinkphp 一看文档就一大堆英文资料,学也学不过来,可是上班时候公司要求你会这个,有的要求你会那个,看书上的理论又假大空,不知道在说什么东西,看实际的例子代码又太复杂庞大,所以今天就做一个简单的小例子主要来给中级阶段的php同学了解MVC的共同原理,了解这些原理自己也可以设计一个mvc 框架
先创建一个主流框架的目录,包含控制器,数据模型,视图显示,3个文件夹,和一个入口文件
现在来设计一个路由地址,http://localhost/mvc/index.php?c=控制器名&a=方法名¶m=参数名;然后写在入口文件里的获取路由的代码,如下图所示,这样写就能获取不同的控制器名字和不同的方法,由入口文件获取这些控制器和方法名,参数后就传入指定的控制器方法名中
现在写控制器的类和方法,便于接受入口文件传入的值,控制器的作用就是协调调用数据处理和显示样式
现在来写好数据处理类,数据处理主要是依靠mysql等和视图显示类,视图主要就是把内容显示出来,一般由smarty代替,数据处理文件名model.php,视图显示index.php
现在输入http://localhost/mvc/index.php?c=控制器名&a=方法名¶m=参数名 看他们都显示出来了,一个简单的框架就完成了,大家有机会自行扩展吧!
那么控制器和视图,数据的关系是什么呢?一般具体中是从入口文件得到用户输入的控制器和方法名,参数,再传给用户指定的控制器,再由控制器(a)把参数传给数据处理(m),m处理后返回给a,a 将得到的内容传给视图显示(v),v再把他显示出来。这只是一个简单的MVC设计模式而已,大家可以在这上面设计出比较复杂的MVC模式
本站内容仅供参考,不作为诊断及医疗依据,如有医疗需求,请务必前往正规医院就诊
祝由网所有文章及资料均为作者提供或网友推荐收集整理而来,仅供爱好者学习和研究使用,版权归原作者所有。
如本站内容有侵犯您的合法权益,请和我们取得联系,我们将立即改正或删除。
Copyright © 2022-2023 祝由师网 版权所有