使用java和javascript进行用户名可用性检查
我试图在点击提交按钮后,使用jsp页面中的javascript函数检查mysql数据库中的用户名可用性。下面是代码:使用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
<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())
。