MVC并不是java独有的,所有的B/S结构的项目都在使用它,它是一种设计模式
javaWeb 与 MVC
其实最初javaWeb并不直接就有了MVC这种完整的体系,都是一步一步发展过来的
javaWeb经历了 jsp Model1, jsp Model1二代, jsp Model2 三个时期
jsp Model1年代
服务器端:只有jsp页面,所有的操作都在jsp页面中,连访问数据库的ApI也在jsp页面完成
也就是说,所有的东西都耦合在一期,对后期的维护十分不利
例子:
一个人开饭店,所有的活都是一个人干,从客人点菜,到自己炒菜,到最后把菜端给
客人,这一系列操作都是由一个人完成
jsp Model1 二代
把业务逻辑这一部分给抽取出来放到javaBean中了,
jsp只要负责显示和请求调度的工作,比起jsp Model1虽然有所改进
但jsp把视图工作和请求调度(控制器)的工作耦合在一起了
例子: 后来饭店慢慢有了一定的进展,一个人忙不过来,于是就花钱请了厨师
我只负责给菜单给客人和把客人点的菜,告诉厨师做就行
jsp Model2
这一模式,已经可以清晰的看到MVC的结构了
jsp:视图层,用来和用户打交道,用来接收数据 和 显示数据
servlet:控制层:负责找到合适的模型来处理业务逻辑,并转发到合适的视图
javaBean:模型层 完成具体的业务工作
例子: 再后来饭店有了一定的规模,我干脆又招了个服务员,根据客户口味的不同,
我把饭店的后厨分为了湘菜系,粤菜系,我只负责把服务员从客人那点的菜
分发给对应的后厨炒,如果点了湘菜我就分发给湘菜系的厨师炒菜
总结: 这些变化你可以想象成从一个人从小饭店干到大饭店的一个过程
MVC中的模型(M)就是一个javaBean!!
1.javaBean规范
a. 必须要为成员提供get/set方法 (两者只提供一个也是可以的!)
b. 必须带有无参构造器
c. 一般对具有set/get方法的成员变量称之为属性
d. 其实就是一个属性没有对应的成员变量,只有get/set方法也是可以的
属性的名称:就是get/set方法后的首字母小写的单词
2. 之前我就总以为javaBean就是一个封装数据的类,其他不做任何处理,原来我理解错了这么久!!
JavaBean其实是一个组件,把业务逻辑封装在这个组件里面,在JSP+SERVLET+JAVABEAN所实现的MVC 中间 它就代 MODEL,JavaBean是可以处理业逻辑的,只要满足了javaBean的规范,它就是个javaBean,并不仅仅只是放几个属性,然后 提供set/get方法就完事了
耦合度:
举个例子:
假如你的电脑中的鼠标坏了,就导致你整个电脑都用不了了,这种就是耦合度太高了(像jsp Model1年代)
而其实现实中,如果你鼠标坏了,就重新换个鼠标,电脑还是照常用, 显示屏坏了,换个显示屏就行
不会那么夸张的导致整个电脑都要重新换一台了,这种就是耦合性比较低
还举个例子:像人的身体(把它想成一个系统),虽然他分工明确,眼睛就是用来看的,嘴巴就是用来吃的,
但是一旦心脏有问题,就会影响到很多地方,比起电脑来说,人的身体的耦合度是算高的
1. MVC模式的好处:
1.各施其职,互不干涉
在MVC模式中,三个层各施其职,所以如果一旦哪一层的需求发生了变化,就只需要更改相应的层中的代码而不会影响到其它层中的代码。
2.有利于开发中的分工
在MVC模式中,由于按层把系统分开,那么就能更好的实现开发中的分工。网页设计人员可以进行开发视图层中的JSP,对业务熟悉的开发人员可开发业务层,而其它开发人员可开发控制层。
3.有利于组件的重用
分层后更有利于组件的重用。如控制层可独立成一个能用的组件,视图层也可做成通用的操作界面。
2. MVC模式的不足
MVC的不足体现在以下几个方面:
(1)增加了系统结构和实现的复杂性。对于简单的界面,严格遵循MVC,使模型、视图与控制器分离,会增加结构的复杂性,并可能产生过多的更新操作,降低运行效率。
(2)视图对模型数据的低效率访问。依据模型操作接口的不同,视图可能需要多次调用才能获得足够的显示数据。对未变化数据的不必要的频繁访问,也将损害操作性能。
最后有什么写的不好的,希望可以不吝指出
觉得对你有帮助的,想打赏的可以打赏一下,哈哈哈,多少无所谓,这也是对我一种支持与鼓励吗,最后不喜勿喷
有志同道合的小伙伴可以加QQ群讨论:897992110