使用java和javascript

时间:2017-07-13 11:26:21

标签: 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" 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表单!

任何帮助?!!

2 个答案:

答案 0 :(得分:0)

除了安全问题(请参阅评论),您的ResultSet rs很可能永远不会为空。试试rs.next(),如果结果中没有数据,则返回false。

答案 1 :(得分:0)

不确定为什么rs.next()不能为您工作,但是如果查询有效,您可以尝试使用rs.isBeforeFirst()然后会生成一行并且这将返回true,否则它将返回false rs中没有行