zoukankan      html  css  js  c++  java
  • 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>
  • 相关阅读:
    time 模块学习
    day 14 自定义模块,常用模块 time .datetime ,time 模块
    day 13 课后作业
    day 12 课后作业
    day 11课后作业
    树状数组最值
    hdu 1059 Dividing bitset 多重背包
    XVII Open Cup named after E.V. Pankratiev. XXI Ural Championship
    最长公共子序列板/滚动 N^2
    Uva 10635
  • 原文地址:https://www.cnblogs.com/guanghe/p/6061797.html
Copyright © 2011-2022 走看看