一尘不染

Struts Web应用程序:可重复使用的验证客户端和服务器端

jsp

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

我问领导为什么,然后他说:“您永远不能信任客户端。” 但另一方面,为了方便起见,他也希望在浏览器中提供JS / jQuery验证。

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


阅读 178

收藏
2020-06-08

共1个答案

一尘不染

  • 服务器端 验证 是强制性的 :请求可以来自修改后的网页,例如,使用FireBug或任何类型的DevTools更改了规则。甚至更容易地,恶意用户可以通过来自页面(或javascript块,或其他) 临时 创建的页面来欺骗请求,从而完全绕开页面。

就像把它当作房屋的门一样:没有它,没有正确的钥匙的任何人都无法进入。没有它,任何人都可以进入。

  • 客户端 验证 是用户友好性能友好的 :它防止用户等待服务器的否定响应,它防止网络被可能被停止的错误请求所淹没(给定用户数量和上载文件的可能性)连同表格数据一起,很快就会达到临界值)。

可以将其想像为大楼外带有 对讲机
的门。有了它,如果您不回答对讲机,人们就会立即离开。没有它,人们就需要进入建筑物,爬楼梯,敲门……只是为了发现您不在家。

需要
应用服务器端验证,就Struts2而言,要么是通过validate()validateXXX()方法,要么是通过XML Validation,或者是使用注释(通过内置的Struts2
An-
actions每个动作,或通过@UmeshAwasthi per 的jsr303-validator-
plugin
-实体)。

如果你想 重用 你的 服务器端 验证 的客户端
可以使用验证Struts2的,jQuery的插件描述在这个答案。

BTW,HTML5(具有后备功能)和客户端上的基本jQuery验证就足够了。

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

2020-06-08