• 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>
  • 相关阅读:
    UVA.10325 The Lottery (组合数学 容斥原理 二进制枚举)
    UVA.11806 Cheerleaders (组合数学 容斥原理 二进制枚举)
    容斥原理、鸽巢原理快速入门
    HDU.1847 Good Luck in CET-4 Everybody! ( 博弈论 SG分析)
    HDU.1850 being a good boy in spring festival (博弈论 尼姆博弈)
    POJ.1067 取石子游戏 (博弈论 威佐夫博弈)
    HDU.2516 取石子游戏 (博弈论 斐波那契博弈)
    HDU.2147 kiki's game (博弈论 PN分析)
    Front Page
    2018-2019 9th BSUIR Open Programming Championship. Semifinal
  • 原文地址:https://www.cnblogs.com/guanghe/p/6061797.html
Copyright © 2020-2023  润新知