Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 管理jsp mvc登录和注册表单_Java_Forms_Jsp_Model View Controller_Jakarta Ee - Fatal编程技术网

Java 管理jsp mvc登录和注册表单

Java 管理jsp mvc登录和注册表单,java,forms,jsp,model-view-controller,jakarta-ee,Java,Forms,Jsp,Model View Controller,Jakarta Ee,我有这个验证函数。它根据数据库验证登录表单。 java是否测试表达式username.isEmpty()和password.isEmpty()两次?前一种 如果((!username.isEmpty())&&(!password.isEmpty()),则在 if(username.isEmpty()) error.addError("username", "Username is mandatory."); if(password.isEmpty()) error.addErro

我有这个验证函数。它根据数据库验证登录表单。 java是否测试表达式
username.isEmpty()
password.isEmpty()
两次?前一种
如果((!username.isEmpty())&&(!password.isEmpty())
,则在

if(username.isEmpty())
    error.addError("username", "Username is mandatory.");
if(password.isEmpty())
    error.addError("password", "Password is mandatory.");
?

是否有任何内部机制“存储”第一次测试的结果,从而避免重做相同的测试? 我希望保持性能,同时,我必须填充错误bean。 如果我想用更多的检查来放置更多的字段,并用正则表达式(例如注册表)进行复杂化,该怎么办? 这个功能还可以吗? 我想遵循的基本原则是:只有通过所有测试,才能将true指定给标志(或输入代码)。否则,它将为false(默认情况下)。 反之亦然(默认情况下标记为true,可能会变为false)

如果我的英语听起来不好,请随时纠正。谢谢

public boolean validate(FormBean bean, FormErrorBean error)
    {
        // the validation flag
        boolean valid = false;

        if (bean instanceof LoginFormBean)
        {
            // check not null
            if (!bean.isEmpty())
            {
                String username = ((LoginFormBean) bean).getUsername();
                String password = ((LoginFormBean) bean).getPassword();

                if ((!username.isEmpty()) && (!password.isEmpty()))
                {
                    // create the DAO
                    UserDao uDao = new UserDao();

                    // check the user
                    valid = uDao.checkUser((LoginFormBean) bean);

                    // set the validation status of the bean
                    ((LoginFormBean) bean).setValid(valid);

                    // add the error, if any
                    if (!valid)
                        error.addError("Either the username is not valid or the password is wrong.");
                }
                else
                {
                    if(username.isEmpty())
                        error.addError("username", "Username is mandatory.");
                    if(password.isEmpty())
                        error.addError("password", "Password is mandatory.");
                }
            }
            else
            {
                // add the empty error...
                error.addError("Both the username and password are missing.");
            }
        }
        return valid;
    }

据我所知,测试表达式将运行两次

如果要多次运行username.isEmpty()和password.isEmpty(),可以先将它们存储为布尔值。理论上,这可能会为您节省少量的开销。然而,考虑到您可能不会多次需要该结果,任何性能提升都可以忽略不计

如果您使用正则表达式添加更多的唯一检查,我无法想象您需要重用它们的结果。我认为你的代码结构很好

java是否测试username.isEmpty()和 password.isEmpty()两次

如果您调用相同的方法2次,则为“是”

是否存在“存储”第一次测试的内部机制 结果,避免重复相同的测试

您可以尝试将结果存储到两个不同的布尔值中(每个值1位):

并在测试中使用它们

如果我想把更多的字段和更多的检查放在一起呢 是否使用正则表达式(例如注册表)?那会吗 功能还可以吗

如果您想推动自己的发展,请尝试使用SpringWeb或ApacheStruts进行表单验证和身份验证方法

我想遵循的基本原则是: 仅当我通过all时,才将true指定给标志(或输入一段代码) 测试。否则,它将为false(默认情况下)。不是恶习 versa(默认情况下标记为true,可能会变为false)

我想你的下一步将是:“该死的,我需要的不仅仅是一面旗帜。我需要用户ID、姓名和姓氏……”。因此,请尝试使用一些模式(如DTO来存储所需内容,并通过应用程序级别传输数据)

我建议您注意您的代码:

如果(!bean.isEmpty())、username.isEmpty()等等

因为可以使用NullPointerException。在尝试访问对象之前,应该确保对象不为null

希望有帮助

再见

boolean isPasswordEmpty = password.isEmpty();
boolean isUsernameEmpty = username.isEmpty();