Javascript验证与业务规则

时间:2014-01-23 16:57:31

标签: java-ee

我有一个概念,我想要明确,或者找出是否有最佳实践。我为我的Web应用程序创建了一个帐户的业务逻辑(服务器端)。代码验证是否已提供名字和姓氏,如果是,则输入数据库条目,并返回帐号。

在网络方面,我有javascript验证,在提交给servlet之前对字段进行相同类型的验证(确保在servlet POST完成之前已经提供了名字和姓氏)。

我的问题是,通常的做法是以javascript验证的形式在web / ui上镜像业务规则验证,还是有更常见的做法?另一个例子可能是名字必须超过1个字符(使此规则更新)。业务逻辑在调用数据库之前检查它。我应该在我的javascript中复制此规则吗?是否有一种常见的做法,或者重复某些验证的方法是否合乎逻辑?

2 个答案:

答案 0 :(得分:1)

我认为在两个地方进行检查是一个好习惯,因为如果你没有检查前端(事情的Javascript方面),用户将不得不提交请求,并可能在之前离开该页面发现她输入的值无效。将其置于原位允许他们即时反馈这些值无效;这可以提供更好的用户体验,恕我直言。

此外,狡猾的用户可以使用像Poster或他们自己的脚本这样的东西来绕过前端验证,所以你当然也希望它在后端。您需要注意的一件事是确保两个验证保持一致。例如,如果您确定可以省略名字,但只更改前端的验证,则后端将阻止提交此新有效值。我建议为前端和后端编写单元测试以保持一致性。

答案 1 :(得分:0)

好的做法是系统条目应该进行验证以确保一致性。因此,在您的方案中,系统的条目是Web应用程序后端。所以你需要在那一侧进行验证。 让我举个例子,假设我创建了一个自动化工具,将数据发布到您的Web应用程序,然后不涉及UI,但如果该工具不提供firstName,它将无法记录数据。

当您的系统被划分为服务层和Web应用程序(作为哑UI)以收集用户输入时,这一点就更加明显了。

现在你仍然需要(或者至少它也更好)为firstName设置ui验证。原因是不能真正阻止用户在数据一致性方面将字段留空,因为服务层无论如何都不会让用户。但它更适合用户体验(UX),因此用户可以获得更快的反馈。

总之,是的,你应该。但出于不同的原因。