MVC是一种软件设计规范,用将业务逻辑、数据、显示分离的方法组织代码,主要作用为降低业务逻辑与视图的双向耦合。MVC不是一种设计模式,是一种架构模式,不同的MVC之间存在差异。
M(Model)模型:JavaBean实现(DAO层与Service层)。Model数据模型,提供要展示的数据,包含数据与行为,实现功能
C(Controller)控制器:Servlet实现,转发重定向。
V(View)视图:JSP。
最典型的是JSP+Servlet+JavaBean的模式
早期的Web开发中,只有Model与View层,将Java代码嵌入JSP页面中。(Model1时代)
DAO层与Service层
传统数据库访问模式缺点显而易见:
一就是各个模块间的耦合太紧,statement要依赖connection,connection还依赖于数据库的种类。
二就是如果我改变的数据库的种类,或者要提供不同的数据库服务,那么我就要提供大量的重复代码。
dao层:dao层叫数据访问层,全称为data access object,属于一种比较底层,比较基础的操作,具体到对于某个表、某个实体的增删改查
service层:service层叫服务层,被称为服务,肯定是相比之下比较高层次的一层结构,相当于将几种操作封装起来,至于为什么service层要使用接口来定义有以下几点好处:
service实现类:也顾名思义,service实现类实现了service接口,进行具体的业务操作。
在java中接口是多继承的,而类是单继承的,如果你需要一个类实现多个service,你用接口可以实现,用类定义service就没那么灵活
要提供不同的数据库的服务时,我们只需要面对接口用不同的类实现即可,而不用重复地定义类
编程规范问题,接口化的编程为的就是将实现封装起来,然调用者只关心接口不关心实现,也就是“高内聚,低耦合”的思想。这样进行分层,访问数据库和进行service之间的分工明确,如果我需要对service的需求修改,无需改变dao层的代码,只要在实现上改变即可,如果我有访问数据库的新需求,那我也只要在dao层的代码中增添即可。