Web开发模式【Mode I 和Mode II的介绍、应用案例】(六)

  • 对于日期而言,需要一个日期转换器。当BeanUtils的setProperty()方法检测到日期时,会自动调用日期转换器对日期进行转换,从而实现封装!
  • 于是乎,就在上面的方法中添加以下一句代码

//日期转换器

            ConvertUtils.register(new DateLocaleConverter(), Date.class);


  • 还有一个问题,用户的id不是自己输入的,是由程序生成的。我们避免id的重复,就使用UUID生成用户的id吧!为了更好的重用,我们也把它封装成一个方法!

/*生成ID*/

    public static int makeId() {

        return Integer.parseInt(UUID.randomUUID().toString());

    }

  • 好的,我们来测试一下吧!以下是RegisterServlet的代码

User user = WebUtils.request2Bean(request, User.class);

        user.setId(WebUtils.makeId());


        //调用service层的注册方法,实现注册

        ServiceBussiness serviceBussiness = new UserServiceXML();

        serviceBussiness.register(user);

  • 效果:

Web开发模式【Mode I 和Mode II的介绍、应用案例】(六)

上面的代码是不够完善的(没有校验用户输入的信息、注册成功或失败都没有给出提示..等等)


  • 下面,我们来校验用户输入的信息吧,如果用户输入的信息不合法,就直接跳转回注册的界面
  • 刚才我们是用BeanUtils把Parameter的信息全部直接封装到User对象中,但现在我想要验证用户提交表单的数据,也应该把表单的数据用一个对象保存着【面向对象的思想、封装、重用】
  • 流程是这样子的:当用户提交表单数据的时候,就把表单数据封装到我们设计的表单对象上,调用表单对象的方法,验证数据是否合法
  • 好了,我们来开发一个表单的对象吧,最重要的是怎么填写validate()方法!

public class FormBean {


    //表单提交过来的数据全都是String类型的,birthday也不例外!

    private String username;

    private String password;

    private String password2;

    private String email;

    private String birthday;

    

    /*用于判断表单提交过来的数据是否合法*/

    public boolean validate() {

        

        return false;

        

    }

    

    //......各种setter、getter方法

}

  • 以下是我定下的规则:

  • 方法的代码如下:

public boolean validate() {


        //用户名不能为空,并且要是3-8的字符 abcdABcd

        if (this.username == null || this.username.trim().equals("")) {

            return false;


        } else {

            if (!this.username.matches("[a-zA-Z]{3,8}")) {

                return false;

            }

        }


        //密码不能为空,并且要是3-8的数字

        if (this.password == null || this.password.trim().equals("")) {

            return false;

        } else {

            if (!this.password.matches("\\d{3,8}")) {

                return false;

            }

        }


        //两次密码要一致

        if (this.password2 != null && !this.password2.trim().equals("")) {

            if (!this.password2.equals(this.password)) {

                return false;

            }

        }


        //邮箱可以为空,如果为空就必须合法

            if (this.email != null && !this.email.trim().equals("")) {

                if (!this.email.matches("\\w+@\\w+(\\.\\w+)+")) {


                    System.out.println("邮箱错误了!");

                    return false;

                }

        }


        //日期可以为空,如果为空就必须合法

        if (this.birthday != null && !this.birthday.trim().equals("")) {


            try {

                DateLocaleConverter dateLocaleConverter = new DateLocaleConverter();

                dateLocaleConverter.convert(this.birthday);

            } catch (Exception e) {


                System.out.println("日期错误了!");

                return false;

            }

        }


        

        //如果上面都没有执行,那么就是合法的了,返回true

        return true;

    }

上一篇:2017年8月开发语言TOP10,JAVA老三。


下一篇:这个云原生开发的痛点你遇到了吗?