MVC与JavaWeb三层架构的误区

最突出的错误
1.首先MVC  ≠  JavaWeb,它们互不冲突,可以同时存在,两者相互依存二者对项目的理解角度不同。
2.首先MVC是框架模式,不是设计模式 (自己百度)。
3.将MVC理解为一种思想是最好的出路!! MVC模式被广泛用于Java的各种框架中,比如Struts2、Spring MVC等等都用到了这种思想。

一、MVC不是java独有,所有的B/S结构的项目都在使用它!
MVC如果在java中的应用可看作

  • Model(模型)(自己写代码)

  • View(视图)(jsp)

  • Controller(控制器)(Servlet)

二、JavaWeb三层架构是java独有的,是在MVC之后出现的
Web层(B/S为例) -->与Web相关的内容(Servlet、Jsp)
业务层-->业务对象(Service)
数据层-->操作数据库(DAO Date Access Object)

疑问:为什么Servlet不放在业务层呢?
首先明确Servlet接口是web独有的,如果将Servlet放在业务层,那么整个业务逻辑都将与web独有的Servlet绑定在一起。
如果将B/S改为C/S架构那整个代码就报废了!!!
原因:因为不再使用web下,业务层将不能在使用Serlvet相关接口,从而报废。因此为了提高代码复用,严格规定了Service层不能出现Web层的相关接口方法,例如:request、response、ServletContext等!

同理:可以思考一下为什么操作数据库只能在数据层进行操作。

MVC与JavaWeb三层架构的误区

 三层是基于业务逻辑来分的,而mvc是基于页面来分的
            MVC模式是一种复合设计模式,一种解决方案
            三层是种软件架构,通过接口实现编程
            三层模式是体系结构模式,MVC是设计模式
            三层模式又可归于部署模式,MVC可归于表示模式