Java 我应该在MVC层和服务层中复制验证吗?
我现在觉得有点矛盾。我有一个web应用程序,MVC框架使用Stripes,后端使用Spring/Hibernate。我在MVC层中有一个帐户注册方法,需要进行以下验证:Java 我应该在MVC层和服务层中复制验证吗?,java,spring,validation,stripes,Java,Spring,Validation,Stripes,我现在觉得有点矛盾。我有一个web应用程序,MVC框架使用Stripes,后端使用Spring/Hibernate。我在MVC层中有一个帐户注册方法,需要进行以下验证: 用户名尚未使用 提供的电子邮件地址尚未与其他帐户关联 我在Stripes(MVC层)中有一个验证方法来检查这两种情况,但我想知道我的服务层是否应该重复这些检查?如果服务层接口作为web服务公开,那么我认为验证是一个好主意,但是如果它只用于web应用程序的上下文中,那么它是必需的吗 编辑:我不打算复制验证代码——我的意思是在两
- 用户名尚未使用
- 提供的电子邮件地址尚未与其他帐户关联
在我看来,您应该区分两种验证:
- 格式数据验证:应该在表示层(在您的案例中是MVC)中进行验证。通常在客户端和服务器端
- 业务数据验证:应该在服务层验证哪些数据
因此,这里的关键驱动因素是安全性,以及您真正需要的安全性。如果你需要很多,你可以选择“纯粹主义”的方法。如果您的应用程序没有做出与生死相关的决策,您可以采用务实的方法。是的,我不是说我会重复验证代码-我是说我会在两个位置调用相同的验证代码正如您所提到的,那么您真的需要进行两次验证,如果除了控制器层之外还有其他客户端。我可能会发现,我可能也希望有不同的验证逻辑