java - Struts Web 应用程序 : Reusable Validation Client-Side & Server-Side

标签 java jquery validation jsp struts2

我们的 Struts 应用程序重复了许多表单验证检查:(1) jQuery/JS 中的客户端,以及 (2) Java 中的服务器端。

我问我的领导为什么,他说“你永远不能相信客户端。”但另一方面,为了方便起见,他也想在浏览器中提供 JS/jQuery 验证。

有很多冗余代码。在双方进行可重用验证的正确策略是什么?现在人们是否手动重复客户端/服务器端验证?

最佳答案

  • 服务器端验证是强制性的:请求可以来自修改后的网页,例如使用 FireBug 或任何类型的 DevTools 更改的规则。或者更简单的是,请求可以由恶意用户精心制作,来自临时创建的页面(或 javascript block ,或其他),完全绕过您的页面。

Think of it like the door of your house: with it, noone without the right key can enter. Without it, anyone can enter.

  • 客户端验证用户友好性能友好:它防止用户等待服务器的否定响应,它防止网络充斥着本可以被阻止的错误请求(鉴于用户数量和上传文件以及表单数据的可能性,这可能很快达到临界质量)。

Think of it like the door with the intercom outside the building. With it, if you don't answer to the intercom, people goes away immediately. Without it, people need to enter the building, climb the stairs, knock to your door... just to discover that you are not at home.

需要应用服务器端验证,在 Struts2 的情况下是 validate()validateXXX() 方法,或通过 XML Validation ,或使用注释(使用内置的 Struts2 Annotations 每个操作,或使用 @UmeshAwasthi 每个实体的 jsr303-validator-plugin)。

如果您想重用您的服务器端验证作为客户端验证,您可以使用Struts2-jQuery-plugin如所述in this answer .

顺便说一句,HTML5(带有回退)和客户端的基本 jQuery 验证就足够了。

把真正的精力放在服务器端,然后如果你还有时间和预算,增强客户端。

关于java - Struts Web 应用程序 : Reusable Validation Client-Side & Server-Side,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28335066/

相关文章:

jquery - 如何在 TypeScript 中扩展 JQuery 函数

javascript - 如何获取 iframe 中存在的 div 对象

javascript - 销毁 DOM 元素时如何处理内存?

validation - Laravel 日期验证不需要 4 位数字年份

javascript - 在自定义方法中使用 .element(element) 时 jQuery 验证失败

java - 为什么在juzu框架开发中要使用gtmpl文件?

java - 将行和列设置为数组

java - ClassCastException: java.lang.Object 无法转换为 java.lang.Integer

java - 评估 Java 中的数学表达式

ruby-on-rails - 更新时的 attr_accessor 和密码验证