首页新闻找找看学习计划

PHP转Java后,小弟关于Web开发分层的疑惑

0
悬赏园豆:10 [已解决问题] 解决于 2019-03-30 10:29

以前做PHP的时候,使用一些流行的框架(CI、Yii、Laravel),这些框架基于MVC,也就是说这些框架分为了Model、View、Controller三层(这不是废话吗?)
但是转到Java之后,发现MVC中的V几乎不怎么接触了,PHP的Model 可以理解为 Java的DAO层吧,但是让我犯迷糊的是:Java项目中出现了Service层和Controller层,大致了解调用过程:Controller调用Service层,然后Service层调用DAO层,但是对于Service的功能却有点懵,感觉Service层和Controller层好难彻底分清除(懂我的意思吗)。
如果是在PHP中,Service层和controller层都是写在Controller中,所以在Java中,Service和Controller有什么好的方法来区分开吗?
希望大家不吝赐教!!!!

寻觅beyond的主页 寻觅beyond | 菜鸟二级 | 园豆:276
提问于:2019-03-29 11:07
< >
分享
最佳答案
0

m是模型v是视图c是控制器
java开发后后代码一般是:bean实体类、dao数据访问层、service服务层、servlet(controller)控制层
dao层不处理业务交给service,页面发送请求给controller,controller再根据请求名调用servlet或直接调用service
可以这样说吧service是实现公交车,controller就是调度中心

收获园豆:5
一世红尘 | 菜鸟二级 |园豆:321 | 2019-03-29 12:13

理解了,感谢老哥公交车和调度中心的例子

寻觅beyond | 园豆:276 (菜鸟二级) | 2019-03-30 10:24
其他回答(5)
0

没写过,但我猜测,多个controller可以调用同一个service,是这样吧,就是这样。不用太纠结这些层,软件复杂了层就多,简单了就少。

另外“Model 可以理解为 Java的DAO层吧”,我觉得好像不是一回事吧,MVC中的Model一应该是提供给View来显示的数据吧。DAO应该是用来持久化和查询数据的吧,通常情况下,可能DAO层查询出来的的实体可以直接作为MVC里的Model来使用,但是有时候也不是直接就能用,如果我是架构师,我反正不会把MVC中的Model和DAO处理的实体等同看待

收获园豆:2
会长 | 园豆:5255 (大侠五级) | 2019-03-29 11:16

老哥,你说的没毛病,但是在PHP的常用框架中,Model的确是 包含了 Java中的Bean和DAO两部分,只不过在Java中将他们分开了。

支持(0) 反对(0) 寻觅beyond | 园豆:276 (菜鸟二级) | 2019-03-29 12:41
0

service主要实现业务逻辑的,dao与数据库打交道,controller主要与前端配合,接收请求并返回数据,

service可以被多个controller调用

controller一般不写过多逻辑

(个人观点)

收获园豆:1
smallwin | 园豆:282 (菜鸟二级) | 2019-03-29 16:38

谢谢哦,现在理解了,我之前就是对 “业务” 这个不好把握,很容易就将很多业务逻辑写在controller中了

支持(0) 反对(0) 寻觅beyond | 园豆:276 (菜鸟二级) | 2019-03-30 10:26
0

service主要是实现业务逻辑的,调用Dao中的方法进行处理,说的通俗点主要是调用Dao层方法处理业务,而controller用于获取用户提交过来的参数,根据参数进行处理,调用service;
分开的好处是在controller中一个请求可能存在多种不同的service处理,而且service也可以被其他的controller重复使用

收获园豆:2
以苦做舟 | 园豆:73 (初学一级) | 2019-03-29 16:44

谢谢哦,现在理解了,我之前就是对 “业务” 这个不好把握,很容易就将很多业务逻辑写在controller中了

支持(0) 反对(0) 寻觅beyond | 园豆:276 (菜鸟二级) | 2019-03-30 10:27
0

MVC和以前的那种三层架构是不一样的,具体我也说不上来,应该是业务逻辑代码放在哪里的问题吧,三层架构分的不是很明确,而mvc是彻底分离了

学会乐观 | 园豆:653 (小虾三级) | 2019-03-30 08:43
0

现在java分层越来越多,已经不再局限于mvc了,但是万变不离其中,你可以吧service跟controller都看做mvc中的c层,controller主要做一些服务的编排,把前端的请求调度到各个service中去处理业务逻辑。service再调dao做持久化操作。

魔力员 | 园豆:216 (菜鸟二级) | 2019-10-16 18:30
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册