Struts2数据校验

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>
原文地址:https://www.cnblogs.com/guanghe/p/6061797.html