服务端数据校验及客户端js脚本验证集成处理初探

一、起源

在项目开发中数据有效性验证肯定是必须的,那么在哪里验证呢!?怎么去验证呢?

针对web项目而言,客户端验证+服务端的验证缺一不可,客户端的脚本验证用于提高用户体验!

服务端的验证主要是为了数据的安全性、合法性的验证!

但是我们在实施这两种验证的时候会发现有以下几个可能出现的问题:

1.客户端代码验证写起来相对比较烦琐,而且易出错!(主要是拼写错误,例如js方法名拼写错误)

2. 服务端的验证和客户端验证要保持一致性一样很烦琐。(客户验证输入不能超过10个字符,那后服 务器端也要相应的控制在10个字符,而且修改时,需要将客户端和服务端同步修改,提示信息,前后端都 要再输入一次!一个字“烦”),总觉得时间不应该花在这个上面!

3.验证与赋值;一般情况下客户端提交的数据,我们验证通过后,把变量的值赋给实体或是相关的变 量,如果不通过有些时候我们有时候还会需要给变量或实体属性值加上一个默认值,这个时候我们写的代 码可能不避免的出现一些if的判断语句,让代码显得不够简洁。

其它的细节问题,这里就不一一列举了,我针对上面的问题,自己做了一个下面的小组件!

二、 思路说明:

为了解决第一个问题和第二个问题,我决定客户端的验证代码由服务端的验证代码直接生成页面中, 这样可以避免客户端的代码在编写上的错误!而服务端的程序代码每次被访问时,通过验证状态开关来开 启验证,用户可以根据自己的业务逻辑来开启验证,我先定义了一个验证容器ValidatorContainer和一个 验证器Validator两个概念,验证容器是指包括了一个或多个验证器对象的容器类,验证器是针对每一条 数据项所添加的验证信息类!

三、调用说明:

可能这一部分的内容可以让你更直观的了解这个验证组件的一些原理和信息:

第一步:先添加引用,这个不用多说,Validator.dll引用进去(最下面附有项目的源码)。

第二步:代码都在下面了,不用再说了

时间: 2024-09-28 21:30:16

服务端数据校验及客户端js脚本验证集成处理初探的相关文章

环信Android为什么服务端加好友,客户端会收到验证通知?

问题描述 环信Android为什么服务端加好友,客户端会收到验证通知,但是其实好友已经添加成功了,或者有没有方法区分是通过服务端添加的好友,还是通过客户端sdk添加的? 解决方案 rest加好友就是直接成为好友的,没有区分服务端和客户端的方法解决方案二:但是rest加好友成功后  客户端会收到一条通知  请求加好友  怎样区分这一条通知是客户端sdk发送的 还是rest发出的解决方案三:区分不了

Ubuntu Server Rsync服务端与Windows cwRsync客户端实现数据同步配置教程

1.Rsync服务端 系统:Ubuntu Server 11.10 IP地址:192.168.21.168 数据存放目录:/home/mysql_data2.cwRsync客户端 系统:Windows Server 2003 IP地址:192.168.21.130 同步的目录:D:mysql_data实现目的:cwRsync客户端每天凌晨3:00钟自动同步Rsync服务端/home/mysql_data目录中的数据到D:mysql_data目录系统运维 温馨提醒:qihang01原创内容版权所有

Ubuntu Server Rsync服务端与Windows cwRsync客户端数据同步配置方法_服务器其它

说明:1.Rsync服务端 系统:Ubuntu Server 11.10 IP地址:192.168.21.168 数据存放目录:/home/mysql_data2.cwRsync客户端 系统:Windows Server 2003 IP地址:192.168.21.130 同步的目录:D:\mysql_data实现目的:cwRsync客户端每天凌晨3:00钟自动同步Rsync服务端/home/mysql_data目录中的数据到D:\mysql_data目录一.Rsync服务端配置 1.开启防火墙t

CentOS Rsync服务端与Windows cwRsync客户端实现数据同步配置方法_服务器其它

说明: 1.Rsync服务端 系统:CentOS 5.5 IP地址:192.168.21.160 数据存放目录:/data/osyunwei 2.cwRsync客户端 系统:Windows Server 2003 IP地址:192.168.21.130 同步的目录:D:\osyunwei 实现目的: cwRsync客户端每天凌晨3:00钟自动同步Rsync服务端/data/osyunwei目录中的数据到D:\osyunwei目录 一.Rsync服务端配置 1.关闭SELINUX vi /etc/

iOS UDP组播服务端收不到客户端发的数据

问题描述 iOS UDP组播服务端收不到客户端发的数据 客户端可以收到服务器发的数据,反过来不行.我想实现双向多播,理论上是可行的吧? 多播绑定的端口是别人向自己发数据的端口吧?加入的多播组应该是向别人发送数据的地址吧? 使用GCDAsyncUdpSocket,为什么只绑定一个端口就行?不是还要绑定IP吗? 本地Socket的IP.端口与发送的目的IP.端口,有点绕晕了,请高手指教 解决方案 bind绑定的是本地的ip地址和端口, 加入多播组的调用中使用对端向外发送的多播ip(通常是224.x.

C/S,客户端是C/ S结构,服务端数据层是WebSerice,加长报表如何开发,用何种工具

问题描述 客户端是C/S结构,服务端数据层是WebSerice,不知道这个我描述的是否足够清楚.现要开发报表,不知用何种报表工具,因为数据层是Webserice的,不像其它本地数据库可以拖曳来完成报表设计(可能是我没设计过).另外:还有一些工程报表是加长的,我记得2003的水晶报表是不可以加长的,只有规定的几种纸张格式.现用的是VS2008Sql2005不知哪位兄弟有好的建议没?请帮下忙,在此谢过. 解决方案 解决方案二:可以借助第三方控件解决方案三:引用1楼simen_frankly的回复:

[SignalR]SignalR与WCF双工模式结合实现服务端数据直推浏览器端

原文:[SignalR]SignalR与WCF双工模式结合实现服务端数据直推浏览器端 之前开发基于WinForm监控的软件,服务端基于Wcf实现,里面涉及双工模式,在客户端里面,采用心跳包机制保持与服务端链接,现在有了新需求,需要开发网页版形式,所以怎么保持与服务端链接是重要点,由于数据量比较大,所以不能采用客户端发起请求不断轮询的方式.参考各种资料后,使用SignalR,主要是支持WebSockets通信.并且Hub链接方式解决了realtime 信息交换的功能问题. 下图是MSDN关于解释:

socket-WebSocket服务端发消息给客户端,浏览器收到消息就关闭了

问题描述 WebSocket服务端发消息给客户端,浏览器收到消息就关闭了 自己按照 Websocket 的 文档写的, 浏览器每次连接上, 一收到消息就断开了 报错:WebSocket connection to 'ws://192.168.1.248:2051/' failed: A server must not mask any frames that it sends to the client. 但是 内容根本就没有mask 然后连网上别的websocket服务器,连上发消息正常, 然

java-Java Socket 读取TCP服务端数据包不完整

问题描述 Java Socket 读取TCP服务端数据包不完整 Java Socket 读取TCP服务端数据包不完整:除了利用数据包大小循环读取输入流的得到完整的数据外,还有其他什么方法? 数据包在网络传输的过程中,数据传递到客户端基本处于"无序"态.除了开辟一块内存按数据包的顺序存放外,还有其他更好的方案么? 解决方案 TCP 因为是长连接的,肯定是有序的.数据接收不完整,这种现象在通讯中很常见的,是必须代码处理. 解决方案二: TCP是有序的吧?UDP才是无序的. 解决方案三: T