1,分前端校验和后台校验,前端校验主要是使用javascript,后台校验是通过编码的方式校验。如果只前台校验的话,高级攻击者很可能会渗透系统,所以必须进行后台校验。
2,后台校验。可以在Action类中写一个validate方法,这个方法继承了AbstractAction类中的校验方法,访问这个Action中任何一个方法的时候都会执行校验,也可以在Action中编写validateXxx方法,这个方法只对Action中的Xxx方法校验。
3,还可以通过配置xml文件的方式校验,文件名为ActionName-validate.xml。
4,通过xml文件校验的错误信息的国际化方式:为<message>元素添加key属性,key属性就是国际化文件的Key。<messagekey=“name.regist”>
5,客户端校验,将输入页面的表单元素改为使用Struts2标签来生成表单,并且为该表单添加validate=”true”属性。
6,在校验配置文件中的国际化信息也可以通过如下方式输出:<message>${getText(“name.requried”)}</message>
7,客户端校验要注意的两个地方:(1)struts2的<s:form>元素有一个theme属性,不要将该属性指定为simple。
8,如果我们只需要为Action的某一个方法指定校验文件,需要将校验文件的文件名定义为:Action名-方法名-validation.xml
9,如果一个方法既有自己的校验文件,又有全局校验文件,则这两个校验文件的内容都对这个方法起作用。
如果一个LoginAction有自己的校验文件,其父类BaseAction也有自己的校验文件,那么子类LoginAction的校验文件包括LoginAction和BaseAction的校验文件。
10,短路校验器:校验规则文件的<validator>元素和<field-validator>元素可以指定一个可选的short-circuit属性,指定这个校验器是否是短路校验器,默认为false。
配置短路校验器为true的,当这个校验器不通过的时候,其他校验器不进行校验。可以避免在页面同时出现多条提示信息。
11,校验器执行顺序:
所有非字段风格的校验器优先于字段风格的校验器。
所有非字段风格的校验器中,排在前面的会先执行。
所有字段风格的校验器中,排在前面的会先执行。