我正在使用JSP编写一个Web应用程序,其中包含一个跟踪所有用户的mysql数据库。在网页中,我使用表单来允许用户注册。
在我的数据库中,例如用户的用户名最多包含20个字符,因此我会避免允许用户使用长于20的用户名进行注册。在我的应用程序中我严格区分所有级别,因此服务,业务逻辑,业务流和JSP页面完成的表示级别之间存在强烈的分离。
我关心的是我应该检查任何给定字段是否正确。在业务逻辑中,我实现了一个抽象用户概念的类,允许创建一个新用户并将其插入我的数据库中。在业务流程(即bean)中,我可以详细说明收到的所有HTTP参数,因此我知道所有字段值。我可以在我的JSP页面中完成它,即使javascript分析每个插入的字段并有条件地提交表单,在bean或我的“用户”类中。哪一个最正确?
答案 0 :(得分:1)
假设您正在使用接近MVC的模式
输入验证与控制器部分相关。由控制器处理数据,然后通过将这些错误消息传递给您的视图来显示用户友好的错误消息。 任何处理都必须在控制器中完成,验证数据正在处理中。
无论如何,模型上的额外安全性并不是坏事,但在这种情况下它完全没用,因为如果你插入超过20个字符,数据库引擎将截断(或抛出错误),因此安全性已经完全到位。
模型仅用于访问和存储数据,而不是验证数据! (除了极少数情况下数据存储需要验证以及数据库结构本身不检查完整性时)。
但同样,这些只是概念,您可以按自己喜欢的方式自由采用概念。只要你在你的应用程序中保持一致(不要在模型中做一些验证,在控制器中做一些验证,如果我们在那里,为什么不能看到一些!)
答案 1 :(得分:0)
我会在模型类中完成它。
你不能做的是在客户端使用javascript进行验证,因为用户可以禁用JS