输入校验是所有Web应用必须处理的问题,因为是Web应用的开放性,网络上所有的浏览器都可以自由使用该应用,因此该应用通过输入页面收集的数据是非常复杂的,不仅会包含正常用户的误输入,还可能包含恶意用户的恶意输入。一个健壮的应用系统必须将这些非法输入阻止在应用之外,防止这些非法输入进入系统,这样才可以保证系统不受影响。
异常的输入,轻则导致系统非正常中断,重则导致系统奔溃。应用程序必须能正常处理表现层接收的各种数据,通常的做法是遇到异常输入时,应用程序直接返回,提示浏览者必须重新输入,也就是将那些异常输入过滤掉。对异常输入的过滤,就是输入校验,也称为数据校验。
输入校验分为客户端校验和服务器端校验。客户端校验主要是过滤正常用户的误操作,主要通过JavaScript代码完成;服务器端校验是整个应用阻止非法数据的最后防线,主要通过在应用中编程实现。
客户端校验的主要作用是防止正常浏览者的误输入,仅能对输入进行初步过滤;对于恶意用户的恶意行为,客户端校验将无能为力。因此,客户端校验绝不可能替代服务器端校验。当然,客户端校验也绝不可少,因为Web应用大部分浏览者都是正常的浏览者,它们的输入可能包含了大量的误输入,客户端校验把这些误输入阻止在客户端,从而降低了服务器的负载。
Struts2框架提供了强大的输入校验功能,既包括服务器端校验,也包括客户端校验。Struts2的输入校验方法分为两种:
① 使用XML,编写校验规则文件。
② 重写validate方法。