zoukankan      html  css  js  c++  java
  • 用户输入验证的集总

     1 一、用户输入验证
     2     1、编程方式:
     3         动作类中的所有方法进行验证:
     4         
     5             步骤:
     6             a、动作类继承ActionSupport
     7             b、覆盖调用public void validate()方法
     8             c、在validate方法中,编写不符合要求的代码判断,并调用父类的addFieldError(String fieldName,String errorMessage)
     9                 如果fieldError(存放错误信息的Map)有任何的元素,就是验证不通过,动作方法不会执行。
    10                 Struts2框架会返回到name=input的result
    11             d、在name=input指定的页面上使用struts2的标签显示错误信息。<s:fielderror/>
    12         
    13         动作类中指定的方法进行验证:
    14             编写步骤与上面相同
    15             
    16             验证方法书写有要求:
    17                 public void validateXxx()   Xxx代表的是要验证的动作方法名,其中要把动作方法名的首字母变为大写。
    18                 
    19     
    20     2、基于XML配置文件的方式:
    21         动作类中的所有方法进行验证:
    22       在动作类的包中,建立一个名称为:动作简单类名-validation.xml ,比如要验证的动作类名是UserAction   UserAction-validation.xml
    23             内容如下:(不同的struts2版本可能不同,要根据情况去寻找)
           在xwork-core-2.3.16.3.jar下的xwork-validator-1.0.3.dtd文件中有定义的
            

            <!--
              XWork Validators DTD.
              Used the following DOCTYPE.

    
    

              <!DOCTYPE validators PUBLIC
                "-//Apache Struts//XWork Validator 1.0.3//EN"
              "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
               -->

              代替下面的老例子
    24 <?xml version="1.0" encoding="UTF-8"?> 25 <!DOCTYPE validators PUBLIC 26 "-//OpenSymphony Group//XWork Validator 1.0.3//EN" 27 "http://www.opensymphony.com/xwork/xwork-validator-1.0.3.dtd"> 28 <validators> 29 <field name="username"> 30 <!-- 内置验证器都是定义好的,在xwork-core.jar com.opensymphony.xwork2.validator.validators包中的default.xml文件中 --> 31 <field-validator type="requiredstring"><!-- 不能为null或者""字符串,默认会去掉前后的空格 --> 32 <message>用户名不能为空</message> 33 </field-validator> 34 </field> 35 </validators> 36 动作类中指定的方法进行验证: 37 配置文件的名称书写有一定要求。 38 动作类名-动作名(配置文件中的动作名)-validation.xml 39 UserAction-user_add-validation.xml

     <param name="字段名">内容</param>要去找对应的类名 看看它里面的setXXX()是什么 然后注入

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 
     3 
     4   <!DOCTYPE validators PUBLIC
     5           "-//Apache Struts//XWork Validator 1.0.3//EN"
     6           "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
     7 
     8 <validators>
     9     <validator type="requiredstring">
    10         <param name="fieldName">name</param>          参数的寻找:针对com.opensymphony.xwork2.validator.validators包中的   default.xml中针对requiredstring寻找类,然后 看看setXxx()方法注入字段名针对name参数不能为空。
     11 <message>xml said username bu neng为空空啊啊</message> 12 </validator>
          两种方式等同
    13 <field name="name"> 14 <field-validator type="requiredstring"> 15 <message>xml said username can not bu null</message> 16 </field-validator> 17 </field> 18 19 </validators>

     但是有些地方只能用 validator ,用不了 field name= ,比如表达式

    <validator type="expression">

      <param name="expression">

        maxNum>minNum

      </param>

    </validator>

    jsp页面用<s:actionerror/>输出的是动作错误  

    <s:fielderror/>输出的是字段错误

    例子程序:

    Validate.java

     1 import java.util.Date;
     2 
     3 import org.apache.struts2.ServletActionContext;
     4 import org.apache.struts2.dispatcher.mapper.ActionMapping;
     5 
     6 import com.opensymphony.xwork2.ActionContext;
     7 import com.opensymphony.xwork2.ActionSupport;
     8 
     9 public class Validate extends ActionSupport {
    10 
    11     private String name;
    12     private String password;
    13     
    14     public String getName() {
    15         return name;
    16     }
    17 
    18     public void setName(String name) {
    19         this.name = name;
    20     }
    21 
    22     public String getPassword() {
    23         return password;
    24     }
    25 
    26     public void setPassword(String password) {
    27         this.password = password;
    28     }
    29 
    30     public String display() {
    31         System.out.println(name+"    ffffffffffffffffffffffffffffffffffffffff     "+password);
    32         if(name==null||"".equals(name.trim()))
    33              addFieldError("username", "用户不能为空啊啊");
    34         if(password==null||password.matches("\d{3,6}")==false)
    35             addFieldError("password", "密码错了啊啊");
    36         System.out.println(name+"   222222222 ffffffffffffffffffffffffffffffffffffffff     "+password);
    37         return SUCCESS;
    38     }
    39 
    40     public String execute()
    41     {
    42         System.out.println("has come to here");
    43         return null;
    44         
    45     }
    46 }
    View Code

    Validate-validate_display-validation.xml

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 
     3 
     4   <!DOCTYPE validators PUBLIC
     5           "-//Apache Struts//XWork Validator 1.0.3//EN"
     6           "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
     7 
     8 <validators>
     9     <validator type="requiredstring">
    10         <param name="fieldName">name</param>
    11         <message>xml said username bu neng为空空啊啊</message>
    12     </validator>
    13 <!--     等同于 -->
    14     <field name="name">
    15         <field-validator type="requiredstring">
    16             <message>xml said username can not bu null</message>
    17         </field-validator>
    18     </field>
    19 
    20 </validators>        
    View Code

    struts.xml中

     1 <?xml version="1.0" encoding="UTF-8" ?>
     2 <!DOCTYPE struts PUBLIC
     3     "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
     4     "http://struts.apache.org/dtds/struts-2.3.dtd">
     5 
     6 <struts>
     7     <constant name="struts.devMode" value="true" />
     8     <constant name="struts.enable.DynamicMethodInvocation" value="false"></constant>
     9     <package name="mypackage" extends="struts-default">
    10         <global-results>
    11         <result name="error">/success.jsp</result>
    12         </global-results>
    13     </package>
    14 <!--     <include file=""></include> -->
    15 
    16     <package name="validate" namespace="/validate" extends="mypackage">
    17         <action name="validate_*" class="cn.itcast.helloworldemo.Validate" method="{1}">
    18         <result name="success">/success.jsp</result>
    19         <result name="input">/submit.jsp</result>
    20         </action>
    21     </package>
    22 
    23 
    24 
    25 
    26     <!-- Add packages here -->
    27 
    28 </struts>
    View Code

    submit.jsp中

     1     <s:fielderror name="username"/>
     2 <%--     <s:fielderror name="password"/> --%>
     3     <form action="${pageContext.request.contextPath}/validate/validate_display" method="post">
     4         <input type="text" name="name"> 姓名
     5         <br/>
     6         <input type="text" name="password">密码
     7         <br/>
     8         <input type="text" name="birthday">生日
     9         <br/>
    10         <input type="submit" >
    11     </form>
    View Code
  • 相关阅读:
    SQLServer中的死锁的介绍
    T-SQL基础--TOP
    jQuery 与js判断是否单选复选选中
    动态替换iframe的src及动态改变iframe的高度
    ztree-持续更新中
    java发送http连接
    nginx配置文件详解
    eclipse Mars4.5.2安装fatjar
    java Scanner类注意事项
    纯java+maven+sqlserver使用mybatis
  • 原文地址:https://www.cnblogs.com/friends-wf/p/3767195.html
Copyright © 2011-2022 走看看