`

关于view、controller、service、dao的理解

阅读更多

        最近,越来越对这几层的含义有兴趣,因此,根据在网上搜索到的资料以及自己的理解,特整理了这篇博文。

       

        首先,分层的目的:高内聚,低耦合。虽然有时候一个controller方法里面仅仅调用一个service的方法,一个service方法里面仅仅调用一个dao层里的方法,但是,这几层还是非常有必要存在的。一、这样看起来结构是很清晰的,虽然对很对新人来说确实看起来很复杂;二、可扩展性和适应性更加强,比如将来用户的业务逻辑有一定的改变,你需要做的仅仅就是在service层中多调用一个方法即可,而不需要对代码有太多的改动,抑或是你将来想换个mvc的框架的话,只需要对接收和返回参数方面做些处理即可,而不需要对service层和dao层做任何改动;三、维护更加简单,其实这个和第二点有点相似,不过,不同的是将来维护的不一定是你本人或者开发这个系统的人,所以,如果你严格按照这种架构来写的话,他们只需要有这种分层意识,很容易就能够对系统有个很好的掌握,也很容易能够对问题进行排查和修改。

 

        view:视图。这个很容易理解,其实view层就是用户用户可以看到的东西。后台怎么处理不关心,只关心怎么样想用户展示信息。

 

        controller:也可以成为action层,业务模块流程。我经常喜欢用控制视图的跳转来简单形容,但是这个是不全面的,因为他除了控制视图的转换之外,还控制了业务的逻辑,但是,这里的控制业务逻辑不是业务逻辑的实现,而仅仅是一个大的模块,你看到之后,知道它实现了这个业务逻辑,但是怎么实现的,不需要关心,仅仅需要调用service层里的一个方法即可,这样使controller层看起来更加清晰。

 

         service:业务逻辑层。接着controller层中,可以想到,service层是业务逻辑(商务逻辑)的具体实现。它向上层的controller层提供接口,并且使用dao层提供的接口。存在的必要性:有时候,我认为更多的时刻,service层中仅仅是调用dao层中的一个方法,那么它是否有必要存在呢?答案是肯定的。因为,假如将来客户的业务有一定的变动,那么这样一来,你只需要在service层中进行一些变动即可。记住,你写程序不应该仅仅为实现功能考虑,更多的还是应该为将来的维护考虑,因为大部分的时间还是在维护上的。

 

        dao:数据访问对象。他只负责对数据进行访问,而不管其他的什么业务逻辑,其实就是只干活,而不管为什么干。在dao层里面要完成的是数据访问逻辑以及对数据的访问。数据访问,大部分情况下就是对数据进行操作。dao层为上层的service层提供接口。dao层在操作完成后,如果是查询,则返回对象,如果是增删改,则仅仅需要返回一个boolean值表示成功失败即可。

 

         小弟正在摸索学习中,如果发现有哪里说的不对,请各位多多包涵并指正。

        

2
0
分享到:
评论
5 楼 商人shang 2013-05-18  
Tyrion 写道
呵呵,我的理解与楼主有点不同,Action是属于View层的,Service是属于Controller层的。

为什么会这样说呢?
4 楼 need_faith 2013-05-18  
view:视图层
service:服务层
domain:业务领域层
dao:数据持久层
3 楼 Tyrion 2013-05-18  
呵呵,我的理解与楼主有点不同,Action是属于View层的,Service是属于Controller层的。
2 楼 商人shang 2013-05-18  
Mybeautiful 写道
总结的很好。

谢谢,关于这个我真是犯了错误一次又一次,现在感觉有点懂了,不过,还是希望有经验的人多多指点下
1 楼 Mybeautiful 2013-05-18  
总结的很好。

相关推荐

    快速生成dao、service、controller等相关代码

    这个过程通常涉及编写DAO(Data Access Object)、Service和Controller层的代码,这些是软件架构中的核心组件。"快速生成DAO、Service、Controller等相关代码"的标题和描述暗示了一个针对这种情况的解决方案,即一个...

    DAO层_Service层_Controller层、View层介绍

    DAO层_Service层_Controller层、View层的一些了解知识,帮助填充对这部分比较空白的开发者们。

    代码生成器实现的Entity,Dao,Service,Controller,JSP神器(含代码附件)

    代码生成器是一种强大的工具,它能够自动生成常见的软件架构组件,如Entity、DAO、Service、Controller以及JSP页面,极大地提高了开发效率。在Java开发领域,这类工具通常用于快速构建基于MVC(Model-View-...

    使用freemarker生成controller service impl pojo dao mapper

    本篇将深入探讨如何使用FreeMarker来生成一套完整的MVC流程,包括Controller、Service、Impl、PageModel、DAO以及Mapper。 1. **FreeMarker简介** FreeMarker是一个基于模板的开源Java库,用于生成文本输出。它的...

    View层、ControllerView层、Controller层层、Service层、Dao层的介绍

    View层、Controller层、Service层、Dao层的区别以及对应的功能

    springMVC基本配置(Controller+Service+Dao)

    Spring容器会在启动时扫描所有带有`@Component`(包括`@Controller`、`@Service`、`@Repository`)注解的类,并将它们纳入管理范围。 5. **配置文件**: 配置SpringMVC通常涉及以下文件: - `web.xml`:定义...

    数据库表生成domain,dao,service,controller工具

    数据库表生成domain, DAO, service, controller工具是一种高效开发辅助软件,主要针对Java Web应用程序开发。这类工具的主要目的是简化从数据库模型到应用层代码的转换过程,帮助开发者快速生成符合MVC(Model-View-...

    自动生成MVC中的Service层、Dao层及Model层代码

    在IT行业中,开发Web应用程序时,常常采用分层架构,如MVC(Model-View-Controller)模式。这种模式将应用程序分为三个主要部分:模型(Model)、视图(View)和控制器(Controller)。MVC模式有助于提高代码的可...

    dao+service+servlet+jsp实现留言板(添加、查看)

    Model负责数据处理和业务逻辑,View负责显示结果,Controller处理用户的请求并协调Model和View。 2. **DAO层**: DAO是数据访问对象,主要用于数据库操作。在这个项目中,DAO层负责与数据库交互,如添加新的留言、...

    -web-Dao-Service-Controller--master.zip

    本篇文章将深入探讨一个基于-ioc(Inversion of Control,控制反转)、aop(Aspect Oriented Programming,面向切面编程)、mvc(Model-View-Controller,模型-视图-控制器)的Java后端框架,以-web-Dao-Service-...

    Service层和DAO层解析

    在Java Web开发中,它们通常被应用于三层架构或MVC(Model-View-Controller)模型中。 DAO(Data Access Object)层是负责与数据库交互的层,它的主要职责是实现数据的增、删、改、查等操作。例如,编写SQL语句来...

    ssh.rar_Action!_service dao_ssh action_ssh com.dao_ssh dao

    )是MVC(Model-View-Controller)框架的一部分,负责处理用户请求并转发到相应的业务逻辑。Action类是Struts2的核心,它接收HTTP请求,调用Service层进行处理,并将结果返回给视图展示。Action类通常通过配置文件或...

    crm项目jsp+servlet+service+dao

    在CRM项目中,JSP作为View层负责显示数据,Servlet作为Controller层处理请求和转发,而Service和DAO层则构成了Model层,处理业务逻辑和数据存储。 6. 数据库设计:CRM系统通常涉及到客户信息、销售数据、订单记录等...

    jsp、servlet进行增删改查,dao层和service层分开

    在Java Web开发中,"jsp、servlet进行增删改查,dao层和service层分开"是一种常见的设计模式,它遵循了MVC(Model-View-Controller)架构,旨在提高代码的可维护性和可扩展性。以下是这个模式的详细解释: 1. **...

    数据库快速生成mapper,dao,entity,service,controller,jsp

    标题中的"数据库快速生成mapper,dao,entity,service,controller,jsp"指的是利用这样的工具自动生成与数据库交互的各个层的代码,包括Mapper接口、DAO实现、实体类、服务层接口与实现以及视图层的JSP页面。...

    JSP+Servlet+AJAX的dao设计模式

    然而,为了遵循MVC(Model-View-Controller)架构,通常我们会把业务逻辑移出JSP,使其仅负责展示数据。 **2. Servlet** Servlet是Java EE中的一个核心组件,它充当了控制器的角色,处理HTTP请求并生成响应。在DAO...

    Servlet使用MVC模式(Dao\Service\Servlet)增删查改

    在JavaWeb开发中,MVC(Model-View-Controller)模式是一种常见的设计模式,用于将业务逻辑、数据处理和用户界面分离,以提高代码的可维护性和可扩展性。Servlet作为JavaWeb应用中的控制器,常被用来处理HTTP请求并...

    JavaWeb实现网上商城:JSP+Servlet+Dao

    MVC:Model View Controller Model: Dao +JavaBean View: Jsp Controller: Servlet Dao: 用于连接数据库及进行数据库的操作:增、删、改、查等 JavaBean:用于数据的封装,方便将查询结果在servlet与jsp页面之间进行...

    分了dao service的ssm整合还附带分页功能

    SSM整合是Java Web开发中常见的一种架构模式...通过这个项目,新手可以学习到如何配置和整合SSM框架,理解DAO和Service层的设计,以及如何在MyBatis中实现分页功能。这将为他们进一步深入Java Web开发打下坚实的基础。

    博客系统(dao+servlet+service+vo+mysql)

    总的来说,这个博客系统是一个典型的MVC(Model-View-Controller)架构的应用,其中MySQL作为模型,Servlet和Service作为控制器,JSP和VO作为视图。通过这个项目,你可以学习到如何构建一个完整的Web应用,包括...

Global site tag (gtag.js) - Google Analytics