发表于: 2018-03-03 23:38:45

2 689


今天完成的事情:

1,先建立一个登陆界面:
    现在遇到的问题:登陆界面访问不了—>原因是访问jsp页面中有一个form表单,在访问这个页面的时候,有一个提交动作,但是因为我还没有填写任何信息,所以提交了一个空的类,导致controller报错。
    在controller中新建了一个GET请求,就可以了。
    可以访问登陆界面之后,输入正确账号密码,可以登陆,但是如果输入错误账号密码,发生报错。后来排错发现,事情是这样的。当输入错误的账号密码时,首先在数据库中查找这个账号,因为账号是错的,所以放回一个null,从这个null中取出的密码自然也是null,我使用登陆时输入的密码比如说“123”和null做比较(用equals方法),发生了报错。换成==比较,则输入正确的账号密码也无法登陆。
    查看equals源码,如下:
public boolean equals(Object anObject) {
    if (this == anObject) {
        return true;
    }
    if (anObject instanceof String) {
        String anotherString = (String)anObject;
        int n = value.length;
        if (n == anotherString.value.length) {
            char v1[] = value;
            char v2[] = anotherString.value;
            int i = 0;
            while (n-- != 0) {
                if (v1[i] != v2[i])
                    return false;
                i++;
            }
            return true;
        }
    }
    return false;
}
    
equals方法做比较的过程:首先用==比较是否相同,比较的是字符串存放地址,如果存放地址相同,那么两个字符串可定先等。如果==不相等,那么就比较两个字符串的长度,如果长度不一样,那么两个字符串肯定不相等。如果长度相等,那么就把字符串拆成一个一个字符,两两比较,如果都相等,表示两个字符串相等。null和“123”比较的时候第一步用==比较结果是false,长度比较结果也是false,这时候拆分字符串的时候,null无法拆分,所以就报错了。
在做比较之前,先判断了一下两个字符串是否为null,如果为null,就跳转回登陆界面,如果不为null,就判断两个字符串是否相等。这样这个问题就解决了。
今天就做了这个事。明天继续任务五。


遇到的问题:

登陆账号密码判断逻辑问题。

明天计划:

继续完成任务五。




返回列表 返回列表
评论

    分享到