2011-10-04 132 views
1

我想验证一个用户名在注册表单上是唯一的,并且希望在客户端键入它之后验证用户名的唯一性,而不是在表单被执行后执行此服务器端提交。查询MySQL数据库客户端

我应该从数据库中收集一个resultSet,将它存储在一个数组中,然后以bean的形式将它传递给jsp页面(我使用的是模型2设计,因此用户在到达之前通过一个servlet在jsp页面)?如果阵列非常大,该怎么办?我如何将这些数据转化为JavaScript?

或者,有没有办法在客户端使用ajax和javascript进行查询?也许它可能以某种方式在后台运行查询?

我真的只是寻找一些方向,因为我什至不知道甚至开始研究这样的事情。这是一个明智的举措,性能明智吗?

+0

为什么这个查询会返回一个大的结果集?要么你得到一行一列,即如果用户名已经存在,或者没有行。 –

+0

大的来源基本上是从数据库中收集所有的用户名,并填充一个数组列表并在用户实际提交表单之前将其发送到jsp页面。这只是我大声思考这是否是正确方法的一种方式。 – ryandlf

+0

啊。我对JSP不熟悉,但是您的意思是所有的用户名都会发送给客户端?那将是一个糟糕的安全选择。无论如何,除非您为了缓存的目的而这样做,否则没有理由从数据库加载每个用户名以检查是否有人被占用。 –

回答

1

我会为此使用“AJAX”。

以下是一种方法:在窗体的用户名文本字段上设置blur()处理函数。当调用blur()方法时,您将用户名发布到后端代码;它会验证它并返回一些适当的响应。然后解析响应并更改用户名文本字段中的CSS类(例如,将其变为红色) - 或者执行其他任何可视的操作,以指示“正在使用的用户名”。

无论哪种方式,你必须从用户名到服务器的用户名进行验证;你不希望任何允许客户端直接使用数据库的机制(认为安全/漏洞利用/等)。

如果您还不熟悉,请查看jQuery(http://jquery.com/),以使您的客户端生活更轻松。

+0

我会如何将用户名发布到后端代码?我是否必须实际离开当前页面,或者是否可以在不向用户通知的情况下完成所有这些操作? – ryandlf

+0

您通过jQuery为此使用“ajax”。请参阅:http://api.jquery.com/jQuery.ajax/ –