我的项目中有一个jsp页面,用户填写创建帐户的详细信息。
当用户输入用户名并单击检查按钮时,如果存在相同的名称,该按钮将在数据库中查找(由于servlet代码,它可以检查)。 如果用户名存在则显示不可用。 现在问题是,当用户点击带有现有用户名的sumbit按钮时,用户名不可用,详细信息将被保存。怎么纠正这个? (我不能发布图像,否则会更清楚。)
答案 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
或类似内容。