zoukankan      html  css  js  c++  java
  • Struts2 手动验证

    * 首先要从页面中获取对应的标签name属性的值,在动作类action中声明同名的属性,提供get和set方法
        
        * 要继承ActionSupport类或者实现Validateable接口
        
        * 重写Validateable接口的validate()方法
            * 前提是:要保证setUsername()、validate()、login()方法要按照这个先后顺序执行
        
        * 如果登录失败,如何处理:
            * this.addFieldError( key, value);
                * key:错误提示字段
                * value:错误提示信息
        
        * 什么时候才是验证通过?
            * 验证通过:1、map集合不存在;2、map集合存在并为空
            * 验证不通过:map集合存在并且不为空
        
        * 分析需求:
            * 用户名不能为null ,""
            * 密码不能为null, "" ,并且密码的长度6-12之间
        
        * 针对所有业务方法进行验证还是针对某个指定业务方法进行验证?
            * 重写的validate()方法,针对所有业务方法进行验证
            * 重写的validate()方法加上要验证的指定的业务方法名(业务方法名的首字母大写),实现针对某个指定的业务方法进行验证
                * 为什么要这样进行拼接?因为struts2框架底层拼接,如果不这样写,底层就找不到对应方法名
       

    1 index.jsp
    2 <s:fielderror></s:fielderror>
    3 <s:form name="loginForm" namespace="/validate"  action="ValidateAction_login.action" method="post">
    4     用户名:<s:textfield name="username"/><br/>
    5     密码:<s:password name="pwd"/><br/>
    6     <s:submit value="登录"/>
    7 </s:form>
    8 <a href="${pageContext.request.contextPath}/validate/ValidateAction_test.action">test</a>
     1 @SuppressWarnings("serial")
     2 public class ValidateAction extends ActionSupport {
     3     private String username;
     4     private String pwd;
     5     public String getUsername() {
     6         return username;
     7     }
     8     public void setUsername(String username) {
     9         this.username = username;
    10     }
    11     public String getPwd() {
    12         return pwd;
    13     }
    14     public void setPwd(String pwd) {
    15         this.pwd = pwd;
    16     }
    17     //只验证Login 业务,不验证test,如果全部验证,把方法名携写作validate()
    18     public void validateLogin() {
    19         if(username==null || username.equals(""))
    20         {
    21             this.addFieldError("error", "用户名不能为空");//key:错误标示;value:错误提示
    22         }
    23         if(pwd==null || pwd.equals(""))
    24         {
    25             this.addFieldError("error", "密码不能为空");
    26         }else {
    27             String pattern="^[0-9a-zA-Z]{6,12}$";
    28             Pattern p=Pattern.compile(pattern);
    29             Matcher m=p.matcher(pwd);
    30             boolean b=m.matches();
    31             if(!b){
    32                 this.addFieldError("error", "密码格式错误");
    33             }
    34         }
    35     }
    36     
    37     public String login(){
    38         System.err.println("1234567890-");
    39         return "success";
    40     }
    41     public String test(){
    42         System.err.println("987654321");
    43         return "success";
    44     }
    45 }
  • 相关阅读:
    LayoutInflater作用及使用
    php学习-数组(一)
    jQuery中$.get、$.post、$.getJSON和$.ajax的用法
    input的onchange事件实际触发条件与解决方法
    input有许多,点击按钮使用form传递文本框的值
    CI分页器pagination的原理及实现
    form表单传递下拉框的Value和Text值,不适用Jquery传递
    Servlet实现文件上传(多文件)(三)
    Servlet实现文件上传(深度)(二)
    Servlet实现文件上传(简单)(一)
  • 原文地址:https://www.cnblogs.com/liuwt365/p/4208896.html
Copyright © 2011-2022 走看看