当新用户尝试使用现有用户名创建帐户时,如何避免在数据库中保存详细信息?

时间:2011-09-28 20:41:20

标签: java sql database jsp

我的项目中有一个jsp页面,用户填写创建帐户的详细信息。

当用户输入用户名并单击检查按钮时,如果存在相同的名称,该按钮将在数据库中查找(由于servlet代码,它可以检查)。 如果用户名存在则显示不可用。 现在问题是,当用户点击带有现有用户名的sumbit按钮时,用户名不可用,详细信息将被保存。怎么纠正这个? (我不能发布图像,否则会更清楚。)

2 个答案:

答案 0 :(得分:0)

首先,你接受HTTP POST必须验证发送给它的数据,当用户点击一个按钮时,如果接收者没有验证信息,那么无论你做什么,坏数据都会进入你的系统。 JSP。

有些人不时发送原始的HTTP POST消息只是为了好玩(我不知道为什么:))看看坏的数据是否会进入写得不好的Web应用程序。

一旦接受POST的servlet拒绝错误数据,您就可以将其重定向回到违规网页,填写错误请求中发送的信息,可能会突出显示有问题的字段。

稍后,如果您有时间,可以编写一堆javascript来预先检查字段并停用提交按钮。这样可以节省后端servlet接收这么多错误请求的麻烦;但是,您不能使用这种技术来避免修复后端servlet。你的servlet获取POST消息的方式太多,不需要你的特定javascript代码工作。

答案 1 :(得分:0)

只需在servlet中添加if-else块,如下所示:

if (usernameExists) {
    showError();
} else {
    saveUser();
}

不要这样做:

if (usernameExists) {
    showError();
}

saveUser();

我还会在数据库的用户名栏中添加UNIQUE约束,以便您的DAO抛出SQLException或类似内容。

另见: