1. 说明
通过编码方式进行校验
以前使用js完成数据校验:客户端的校验方式。
Struts2的数据校验:属于服务器端校验。
2. 定义Action
1 public class UserAction extends ActionSupport
2 {
3 // org.apache.struts2.interceptor.TokenInterceptor
4 private String uname;
5 private String upwd;
6 public String getUname()
7 {
8 return uname;
9 }
10 public void setUname(String uname)
11 {
12 this.uname = uname;
13 }
14 public String getUpwd()
15 {
16 return upwd;
17 }
18 public void setUpwd(String upwd)
19 {
20 this.upwd = upwd;
21 }
22 /****
23 * 继承ActionSupport,重写validate方法 在validate方法中,完成校验逻辑
24 * ***/
25 @Override
26 public void validate() {
27 System.out.println("-------------validate");
28 if(uname==null||"".equals(uname)){
29 super.addFieldError("uname", "用户名不能为空.....");[A3]
30 }
31 }
32 /**
33 * 只针针对用户的登陆请求,进行密码的验证 validateMethodName(MethodName处理某个具体的请求的方法名子)
34 * ***/
35 public void validateUserLogin()
36 {
37 if (upwd == null || "".equals(upwd))
38 {
39 super.addFieldError("upwd", "密码不能为空.....");
40 }
41 }
42 // 注册只验证用户名
43 public String userReg()
44 {
45 System.out.println(uname + " " + upwd);
46 return Action.SUCCESS;
47 }
48 // 用户名密码都验证
49 public String userLogin()
50 {
51 System.out.println(uname + " " + upwd);
52 return Action.LOGIN;
53 }
3. 注册Action
1 <package name="user" namespace="/" extends="struts-default">
2 <action name="userAction_*" class="com.guangsoft.action.UserAction"
3 method="{1}">
4 <result name="input">/index.jsp</result>
5 <result>/index.jsp</result>
6 <result name="login">/login.jsp</result>
7 </action>
8 </package>
4. 总结
继承ActionSupport,重写validate方法,实现校验逻辑。
校验流程:首先执行进行所有请求的校验的validate方法,在执行特定请求进行校验的validateXxx方法,然后struts2框架会根据保存错误消息的Map的size进行执行的流程控制
Map.size==0 放行,正常执行处理请求的方法
Map.size>0,struts2框架找名字为input的result。
5. 通过struts2的校验框架实现数据校验
自动校验。
在struts2中自定定义了校验器,封装了常用数据的校验逻辑。
5.1定义校验文件
封装校验器需要的参数
在需要校验的Action所在的包中定义文件:
ActionName-validation.xml :针对该Action的所有请求进行校验
ActionName-actionName_methodName-validation.xml :针对某个特定的请求进行校验
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!DOCTYPE validators PUBLIC
3 "-//Apache Struts//XWork Validator 1.0.3//EN"
4 "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
5 <validators>
6 <!-- 指定需要校验的字段 -->
7 <field name="uname">
8 <!-- 指定对该字段进行校验的校验器 -->
9 <field-validator type="requiredstring">
10 <!-- 错误的提示信息 -->
11 <message>xml-用户名不能为空....</message>
12 </field-validator>
13 </field>
14 <!--
15 <field name="age">
16 指定对该字段进行校验的校验器
17 <field-validator type="int">
18 <param name="max">50</param>
19 <param name="min">20</param>
20 <message>年龄不再指定范围....</message>
21 </field-validator>
22 </field>
23 -->
24 </validators>