2 publicz string name publicz_String_Name 于 2017.09.08 20:23 提问

java常用的三层架构,有点蒙

Action(Controller)/Service/Dao这几个层的每一个层的功能是什么?它们之间的调用关系是怎样的???

7个回答

caozhy
caozhy   Ds   Rxr 2017.09.08 22:46

ction是管理业务(Service)调度和管理跳转的。

  Service是管理具体的功能的。

  Action只负责管理,而Service负责实施。

  DAO只完成增删改查,虽然可以1-n,n-n,1-1关联,模糊、动态、子查询都可以。但是无论多么复杂的查询,dao只是封装增删改查。至于增删查改如何去实现一个功能,dao是不管的。

  总结这三者,通过例子来解释:

  Action像是服务员,顾客点什么菜,菜上给几号桌,都是ta的职责;

  Service是厨师,action送来的菜单上的菜全是ta做的;

  Dao是厨房的小工,和原材料打交道的事情全是ta管。

  相互关系是,小工(dao)的工作是要满足厨师(service)的要求,厨师要满足服务员(action)转达的客户(页面用户)的要求,服务员自然就是为客户服务喽。

  现在最基本的分层方式,结合了SSH架构。Model层就是对应的数据库表的实体类。Dao层是使用了Hibernate连接数据库、操作数据库(增删改查)。Service层:引用对应的Dao数据库操作。Action层:引用对应的Service层,在这里结合Struts的配置文件,跳转到指定的页面,当然也能接受页面传递的请求数据,也可以做些计算处理。

  以上的Hibernate, Struts,都需要注入到Spring的配置文件中,Spring把这些联系起来,成为一个整体。
caozhy
caozhy   Ds   Rxr 2017.09.08 22:46
 Action是管理业务(Service)调度和管理跳转的。

      Service是管理具体的功能的。

      Action只负责管理,而Service负责实施。

      DAO只完成增删改查,虽然可以1-n,n-n,1-1关联,模糊、动态、子查询都可以。但是无论多么复杂的查询,dao只是封装增删改查。至于增删查改如何去实现一个功能,dao是不管的。

      总结这三者,通过例子来解释:

      Action像是服务员,顾客点什么菜,菜上给几号桌,都是ta的职责;

      Service是厨师,action送来的菜单上的菜全是ta做的;

      Dao是厨房的小工,和原材料打交道的事情全是ta管。

      相互关系是,小工(dao)的工作是要满足厨师(service)的要求,厨师要满足服务员(action)转达的客户(页面用户)的要求,服务员自然就是为客户服务喽。

      现在最基本的分层方式,结合了SSH架构。Model层就是对应的数据库表的实体类。Dao层是使用了Hibernate连接数据库、操作数据库(增删改查)。Service层:引用对应的Dao数据库操作。Action层:引用对应的Service层,在这里结合Struts的配置文件,跳转到指定的页面,当然也能接受页面传递的请求数据,也可以做些计算处理。

      以上的Hibernate, Struts,都需要注入到Spring的配置文件中,Spring把这些联系起来,成为一个整体。
relnardo
relnardo   2017.09.08 23:43

controller是控制层负责业务逻辑,service是具体业务的实现,dao是数据库操作层,与数据库打交道。
比如你要完成删除操作:先调用执行删除操作的controller(接收数据,将数据传给service),之后在controller中调用service(对参数进行解析)实现删除操作,service再执行dao层相应方法实现数据库数据删除。
总结:client->controller->service->dao->database->dao->service->controller->client

bfcqnqwnfa
bfcqnqwnfa   2017.09.09 08:42

dao层是最底层的,负责和数据库打交道,是一些增删改差的操作
service 是程序的业务逻辑实现,有各种方法,调用的是dao层封装好的增删改查操作
controller 是最外层,负责直接和页面打交道,获取前端和返回数据,调用的是service封装好的业务逻辑的实现。

ziwozizhan
ziwozizhan   2017.09.09 22:56

在javaweb项目中:
1.正向逻辑(请求):
浏览器发起url请求到controller ---> ontroller处理请求信息(请求参数处理等),调用service ---> service层调用dao层获取数据,进行逻辑处理
---> dao层执行sql/hql语句与数据进行交互
2.反向逻辑(响应):
dao层将与数据库交互结果(或查询数据)返回给service ---> service根据dao层返回信息执行业务逻辑,并将最终结果传递回controller --->
controller对结果信息进行数据处(如:转成json格式)返回给浏览器 ---> 浏览器根据返回数据进行页面展示

lianjunzongsiling
lianjunzongsiling   2017.09.08 20:54

大致说下吧

dao用来操作数据库,是直接,也可能是唯一跟数据库打交道的部分

service主要用来实现业务逻辑,也就是调用dao从数据库取需要的数据,然后加工处理成需要的格式

controller就是用来接收用户请求,然后调用service进行业务逻辑处理,然后从service拿到数据,然后返回给客户端

这是大体用法,严格来说,工作中只有dao层能操作数据库,service严禁操作数据库,service用来完成各种业务逻辑,controller总体调控,调用service完成整体业务逻辑,然后将数据返回给客户端

weixin_39863229
weixin_39863229   2017.09.08 21:21

DAO(DataBase Access Object) 最里层,直接连接数据库,并对数据库进行操作。他下面写接口和实现类等。后端
Service是实现系统的业务逻辑需求,他是从DAO里面调用类和方法。服务器
Controller就是最外层,将Service中实现的业务结果,展示出来。前端

楼上的说的很详细了

Csdn user default icon
上传中...
上传图片
插入图片