项目中客户端,服务端验证,数据库联合唯一约束,事务管理。
项目中有个需求,发布一个活动,记录下参加该活动的id和参与人id,同时调用接口,往收藏夹中添加一条记录,往交易表中添加一条记录。最后根据返回的结果,给出不同的提示信息。
1.如果当前的在jsp页面上面做处理,判断是否参与过。参加过之后,参加按钮不可点。没有参加的情况,参加按钮可以点。
2.jsp客户端加上js处理,参加按钮点击完之后,按钮不可点。
3.在controller中,业务逻辑开始前,再次java判断是否参加过该活动。
4.在数据库中参与表(活动id,参与人id)加上联合唯一约束。根据异常来处理不重复参加。
5.将以上几个表的操作放到一个事务中处理。避免参加人重复参加的情况。
总结:不要相信客户端的验证,不要相信网络的时延(多次点击多次提交的情况~~!!),正常情况下,以上1到5任何一个情况都可以限制参与人只参加一次活动,然而项目上线在实际中却还是出现了重复参加的记录。所以只有将以上情况联合起来一起处理。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。