struts2校验、ajax校验、javascript验证有何区别及联系?

struts2验证:

Struts2的validate数据校验有两种方式:
1.    Action中的validate()方法
Struts2提供了一个Validateable接口,这个接口中只存在validate()方法,实现这个接口的类可直接被Struts2调用,ActionSupport类就实现了Vadidateable接口,但他的validate()方法是一个空方法,需要我们来重写。
validate()方法会在execute()方法执行前执行,仅当数据校验正确,才执行execute()方法, 如错误则将错误添加到fieldErrors域中,如果定义的Action中存在多个逻辑处理方法,且不同的处理逻辑需要不同的校验规则,这种情况下validate()会对所有处理逻辑使用相同的校验规则,为了实现不同的校验逻辑,需要通过validateX()方法,其中X表示处理逻辑的方法名。
2.    通过XWork校验框架
使用validate方法校验时,如果Web应用中存在大量Action就需要多次重写validate方法,因此可以使用XWork的validator框架来对Struts2进行数据校验,减少代码量。
在com.action包下创建验证文件LoginAction-validation.xml,注:当一个Action中有多个业务处理方法是,命名规则为:actionName-methodName-validation.xml,其中actionName为Action类名,methodName为Action中某个业务处理方法的方法名,并且文件的搜索顺序与方式一种validate()和validateX()一样。

struts2校验是数据提交到服务器进行验证;
属于后台校验;
使用Validate方法倒是可以避免用户绕开校验的风险,但是这种的校验可能需要用户刷新界面。

javascript的验证:

是在页面端进行验证,数据不会提交到服务器端进行验证;
用javascript进行验证能减少服务器的压力;
属于前台校验;
使用JS验证会给用户带来比较好的体验,不用刷新界面,会带来比较好的用户体验。但是不好的是这种客户端验证不靠谱,有可能会被用户屏蔽掉,直接访问服务端了。 

比如下面的情况:

绕过js前台验证的方法:
把里面验证的js代码去掉;
ie浏览器,禁用js ;
最好的绕过js的办法,就是使用瑞士军刀或WebScarab软件,修改提交的数据;

ajax的验证:
比如说,你有一个注册的功能,你验证用户名的时候,首先验证用户名是不是合法的,如果是合法的你还需要验证之前是不是这个用户已经存在了,要知道是不是
重复就只有查看数据库,因此用ajax发送异步请求,来验证该用户是不是已经存在了。 
ajax是异步验证;

总结:
JS验证与struts验证,一个是前台的校验 一个是后台的校验,一般两个都要,后台的更保险,只有通过后台校验才能安全把关。后台校验是把握数据库安全的第二道防线。
前台为了客户体验,后台为了你真正写入的数据的安全,两个最好都要,但是后台是一开始最好就有,前台可以慢慢加入。
我们在前台验证后,还需要服务端验证。
所有客户端验证,都不是真正的最安全的验证方法,我们必须要要进行服务端验证,否则网站存在安全隐患。
所以对数据进行客户端和服务端验证,非常有必要,也非常重要










猜你喜欢

转载自blog.csdn.net/sinat_23619409/article/details/80255820