在真正的基于Java的企业应用程序中,应该在哪一层进行验证?
我曾在一些主要基于Spring框架和JavaEE(主要是EJB)的企业应用程序中担任开发人员;但不是所有的图层(视图图层是我至少研究过的) 考虑多层应用程序(客户端层、业务层、数据层等)数据验证应在哪一层进行? 我听说过Bean验证API即:在真正的基于Java的企业应用程序中,应该在哪一层进行验证?,java,spring-mvc,bean-validation,Java,Spring Mvc,Bean Validation,我曾在一些主要基于Spring框架和JavaEE(主要是EJB)的企业应用程序中担任开发人员;但不是所有的图层(视图图层是我至少研究过的) 考虑多层应用程序(客户端层、业务层、数据层等)数据验证应在哪一层进行? 我听说过Bean验证API即:jsr303;但是验证是在bean中执行的,即服务器端(如果我理解正确的话) 那么在实际应用中,验证应该在哪里进行呢?是否应该在客户端层本身进行一些验证(例如,如果使用的视图技术是JSP,那么验证是否应该在JSP中进行)?如果是这样,那么JSR303的优点是
jsr303
;但是验证是在bean中执行的,即服务器端(如果我理解正确的话)
那么在实际应用中,验证应该在哪里进行呢?是否应该在客户端层本身进行一些验证(例如,如果使用的视图技术是JSP,那么验证是否应该在JSP中进行)?如果是这样,那么JSR303的优点是什么
因为验证而拒绝从客户端到服务器的数据传输也是没有意义的,我不清楚什么是正确的验证方法
理解这一点的任何解释都是值得赞赏的。您是正确的,Bean Validation API在业务逻辑层执行验证,而不是在客户端执行验证。一般来说,数据验证应该尽可能靠近客户机进行,最好是在客户机端进行,这也是正确的 但有时,您无法在那里进行验证,因此需要服务器端验证。例如,如何验证已在注册页面中登录 有时验证甚至深入到数据层。例如,数据完整性约束是数据层验证(引用完整性、可空性等)
总之,数据验证应尽可能在客户端进行,但有时不能在客户端进行。因此,您必须在服务器端进行验证,而不必考虑在客户端和服务器之间传输数据的成本。您是正确的,Bean验证API在业务逻辑层而不是客户端执行验证。一般来说,数据验证应该尽可能靠近客户机进行,最好是在客户机端进行,这也是正确的 但有时,您无法在那里进行验证,因此需要服务器端验证。例如,如何验证已在注册页面中登录 有时验证甚至深入到数据层。例如,数据完整性约束是数据层验证(引用完整性、可空性等) 总之,数据验证应尽可能在客户端进行,但有时不能在客户端进行。因此,您必须在服务器端执行此操作,而不必考虑在客户端和服务器之间传输数据的成本。据我所知,因为“验证从用户接收的输入以保持数据完整性是应用程序逻辑的一个重要部分”,始终鼓励web开发人员在UI和业务逻辑中进行两步数据验证。让我向你简要介绍一下
对于您的疑问,“由于验证而拒绝从客户端到服务器的数据传输也没有意义。”。。看起来可能是这样,但让流程以这种方式处理涉及复杂逻辑的验证和更好地处理异常是非常重要的。通常,流程中有3层