使用java和javascript进行用户名可用性检查

使用java和javascript进行用户名可用性检查,javascript,java,mysql,jsp,Javascript,Java,Mysql,Jsp,我试图在点击提交按钮后,使用jsp页面中的javascript函数检查mysql数据库中的用户名可用性。下面是代码: <button type="button" class="signUpbtn" id="btn1" onclick="return check();" />Sign Up</button> <INPUT TYPE="button" class="signInbtn" VALUE="Sign In" on

我试图在点击提交按钮后,使用jsp页面中的javascript函数检查mysql数据库中的用户名可用性。下面是代码:

    <button type="button" class="signUpbtn" id="btn1" onclick="return check();" />Sign Up</button>
                    <INPUT TYPE="button" class="signInbtn" VALUE="Sign In" onClick="submitFunction(1)">
                </div>
            </div>
                <script> 
                    function check(){
                        <%
        String user = request.getParameter("userName");
        user = (String) session.getAttribute("userName");
        String sql = "select * from user where UserName = ?" ;
        PreparedStatement ps = null;
        ps = MysqlConnection.getPreparedStatement(sql);
        ps.setString(1, user);
        ResultSet rs = ps.executeQuery();
        if (rs == null){
            response.sendRedirect("ManagerSignUp.jsp");
        }
        else{
           %>
         alert("Please Choose another username!");
<%} %>
                               }
   </script>
注册
函数检查(){
警告(“请选择其他用户名!”);
}
MysqlConnection是一个数据库连接类(即,不是错误)

问题是,当我尝试使用一个不存在的用户名注册时,它仍然会给出一条消息,指示上面重复的用户名

另一个问题是rs.next()和rs.equal(),所有这些方法都会破坏我的html表单


有人帮忙吗

除了安全问题(请参见注释),您的
结果集rs
很可能从不为空。请尝试
rs.next()
,如果结果中没有数据,则返回false

不确定为什么
rs.next()
对您不起作用,但是您可以尝试使用
rs.isBeforeFirst()
如果查询起作用,那么将生成一行,这将返回true,否则它将返回false,因为rs中没有行

您无法在JavaScript标记中运行Java代码。为什么?Java代码将在服务器上呈现页面时执行,而JavaScript代码将在用户的浏览器中执行。那么我可以做什么不同的事情呢?您需要从JavaScript代码中执行请求(例如AJAX请求),并在服务器上用Java处理它。网上有很多关于如何实现这一点的教程,但您可能应该从基础开始,在jsp中包含java代码不是一个好的实践。您可以发出一个GET请求,该请求将由javascript触发,并让servlet处理该请求并进行数据库身份验证。感谢您的回复!:)我对rs.next()有一个问题,它破坏了html表单,我找不到解决方案,甚至找不到原因!到底发生了什么?在何处运行rs.next()?在以下条件中:if(rs.next())而不是==nullOh,请尝试检查false而不是:
if(rs.next()==false)
if(!rs.next())