为了账号安全,请及时绑定邮箱和手机立即绑定

每个方法都需要对参数进行检查吗?

每个方法都需要对参数进行检查吗?

侃侃尔雅 2019-03-14 18:15:45
举个例子:例如一个web应用.分为三层:action层, service层, dao层action层里有一个动作 loginAction()   在该方法里,我需要取到username和password, 这里我肯定需要进行参数的验证. 这里我   做了,那下面的service层的业务逻辑方法login是否还需要对参数username和password进   行检测呢? 亦或者我为什么不可再login里进行参数检验, 外面就不检测了. 这里有什么指   导原则吗?     service层里有一个方法 login(String username, String password)一直对这里比较困惑. 请大家帮忙看看
查看完整描述

5 回答

?
郎朗坤

TA贡献1921条经验 获得超9个赞

采用面向契约的编程,service层保护dao层,所以dao可以不做参数校验。controller层是入口,所以当然需要做参数校验,如果controller层是所有service层的入口,那么也可以由controller层来保护service层,service层不做校验。但是一般业务逻辑是放在service层的,service层会做业务上的参数校验,而且校验做在service层的好处是,如果不同controller层调用同一个service,那么业务校验不用写两遍,或者单独抽取校验方法。


查看完整回答
1 反对 回复 2019-04-16
?
慕哥9229398

TA贡献1877条经验 获得超6个赞

对于参数校验应该属于action层去做,比如struts的validator,action层做的好处是对错误输入作出最快响应。
对于你的另一个问题,比如action层做了校验,service层以及dao层是否需要再次进行校验,这个肯定是不需要的,对于service和dao层来说数据来源就是action,如果action能够保证数据来源的正确性,那么service和dao就没必要再次校验,因为service和dao并不是对外提供的接口,而action是对外提供的接口。

查看完整回答
反对 回复 2019-04-16
?
繁花不似锦

TA贡献1851条经验 获得超4个赞

个人观点:
参数验证也是业务逻辑的一部分,应该放到service做

查看完整回答
反对 回复 2019-04-16
?
慕尼黑8549860

TA贡献1818条经验 获得超11个赞

service一般不用做校验吧?action做过了当然不需要啊。
当然,前端的任何请求不可信

查看完整回答
反对 回复 2019-04-16
?
弑天下

TA贡献1818条经验 获得超8个赞

建议在action层验证,有问题能及时反馈回去,题主所说的参数检验不知道包不包括参数过滤,建议做一层过滤吧


查看完整回答
反对 回复 2019-04-16
  • 5 回答
  • 0 关注
  • 1051 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信