一个DAO类封装的是针对某一个表的增删改查实现细节
一个Service类封装的一组关联的业务实现的细节
1.【定义】: 一个业务即为用户的一个请求。真实的场景中
用户的一个业务中往往包含多个子任务,只有
所有的子任务都顺利完成,才可以任务业务处理成功
只要有任意一个子任务不能顺利完成,此时认为当前业务
整体处理失败
2.【特征】:一个业务中往往包含多个子任务
例子: 张三给李四转账3000元
1.确认系统中存在"张三"用户
2.确认系统中存在"李四"用户
3.确认"张三"的余额大于等于3000
4.确认"李四"的余额
5.实现"张三"的账户更新-3000
6.实现"李四"的账户更新+3000
3.【业务处理实现问题】:
1.开发工作量相对较大,如果每次进行业务开发时,都需要从头进行开发
增加开发难度和开发工作量
2.不同的程序员对于同一个业务提出解决的方案往往不相同,导致在同一个
项目中可能对同一个业务出现多种不同处理方案,导致运行出错
4【业务实现要求】:
1.一个业务在一个项目中只有一个解决方案
2.业务实现细节应该封装到一个方法中,进行业务处理代码复用
1.应用于互联网开发的一个规则.
2.这是一个应用了数十年的开发规则。
1.指定了一次互联网开发过程中,必须出现的角色有哪些
2.指定了一次互联网开发过程中,必须出现的角色担负职责
3.指定了一次互联网开发过程中,必须出现的角色出场顺序
1.C, controller object,控制层对象(Servlet对象)
2.M, model object, 业务模型层对象(Service对象)
3.V, view object, 视图层对象(响应对象/JSP)
1.controller object,控制层对象(Servlet对象):最多只能做三件事
1)可以调用【请求对象】读取请求包的信息
2)必须调用【业务模型层对象(Service对象)】来处理业务
3)必须调用【视图层对象(响应对象/JSP)】将业务处理结果写入到响应体
2.model object, 业务模型层对象(Service对象)
1)依次处理业务中子任务,如果子任务涉及到对表文件操作,此时可以调用DAO来协助
2)根据子任务执行情况,判断业务是否处理成功
3)必须将【业务处理结果】返回给Controller对象
3.view object, 视图层对象(响应对象/JSP)
1)永远不负责对业务进行处理
2)只能将【处理结果】写入到响应体
---->DeptDao
调用流程: 浏览器--------------->Servlet------->Service
----->EmpDao
响应流程: DAO----->Service---->Servlet---->视图对象---->响应体---->浏览器