在Struts2中,请求参数的校验要放在服务端进行。其实我们在做.NET的项目时,使用过EasyUI,EasyUI有各种校验机制,那会是在客服端就直接对输入参数进行了校验。但是我们的Struts框架也是蛮强大的,它本身就给我们提供了非常详细的校验机制。
1.手动校验
使用手动校验,需要一下这么几个条件:
①你的Action要继承ActionSupport接口;
②重写validate接口,如果属性有问题,通过addFieldError(String,String)方法存储错误信息.
③如果向fieldError中存储了错误信息,workflow拦截器就会跳转到input视图.
④在input视图上通过<s:fielderror>来显示错误信息.可以通过 <s;fielderror fieldName="">
代码展示:
package cn.tgb.action; import cn.tgb.model.People; import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.ModelDriven; public class PeopleAction01 extends ActionSupport implements ModelDriven<People>{ private People people = new People(); @Override public People getModel() { return people; } public String register(){ System.out.println(people.getUsername()+"注册成功了~"); return null; } public String longin(){ System.out.println(people.getUsername()+"登陆成功了~"); return null; } //重写ActionSupport中的validate方法 @Override public void validate() { System.out.println("参数校验"); } public void validateRegedit(){ System.out.println("注册方法参数校验"); } public void validateLogin(){ System.out.println("注册方法参数校验"); } }
2.配置校验
使用配置校验,需要满足下面的条件:
①你的Action要继承ActionSupport接口;
②创建一个xml文件来校验,这个xml文件要和Action在同一个包下,命名ActionClassName_validation.xml;如果一个Action中有多个方法,如果我们要针对该方法进行校验的话,将xml文件命名为ActionClassName-actionName-validation.xml即可。
③在xml文件中配置校验。
代码展示:
加入我们对PropelAction中的register()方法进行校验,xml文件的命名为:PeopleAction-register-validation.xml.配置如下:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0.3//EN" "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd"> <validators> <field name="username"> <!-- 校验用户名不能为空 --> <field-validator type="requiredstring"> <message>用户名不能为空!</message> </field-validator> <!-- 校验用户名长度必须在6-10位之间 --> <field-validator type="stringlength"> <param name="maxLength">10</param> <param name="minLength">6</param> <message>用户名必须在${minLength}-${maxLength}位之间</message> </field-validator> </field> <!-- 校验age属性必须在10-80之间 --> <field name="age"> <field-validator type="int"> <param name="min">10</param> <param name="max">80</param> <message>年龄必须在${min}-${max}之间</message> </field-validator> </field> <!-- 校验生日范围 --> <field name="birthday"> <field-validator type="date"> <param name="max">2004-12-31</param> <param name="min">1934-01-01</param> <message>生日必须在 1934年01月01日到2004年12月31日之间</message> </field-validator> </field> <!-- 校验邮箱 --> <field name="email"> <field-validator type="email"> <message>邮箱格式化不正确</message> </field-validator> </field> <!-- 主页校验 --> <field name="myurl"> <field-validator type="url"> <message>格式不正确</message> </field-validator> </field> <!-- 对telphone信息使用正则校验 --> <field name="telphone"> <field-validator type="regex"> <param name="regexExpression"><![CDATA[^139\d{8}$]]></param> <message>格式不正确,必须是139开始</message> </field-validator> </field> <field name="repassword"> <field-validator type="fieldexpression"> <param name="expression"><![CDATA[(password==repassword)]]></param> <message>两次密码输入不一致</message> </field-validator> </field> </validators>
总结:在struts学习的这块,一定要和前面学习的ASP.NET MVC结合起来,这样对理论的理解和比较快;在一个就是要多多动手实践,很多时候看视频中的代码逻辑很简单,但是让自己敲却不一定敲的出来。而且敲代码的也可以加深自己的知识点的理解,实现代码也会提高自己的兴趣和自信心,何乐而不为呢?