在很多的注册页面都会引用到用户名检测的功能,这里我就自己用jsp+js做了一个用户名检测的功能,虽然并不高大上,只是记录一下,现在自己在大学里面独自完成的第一个java web项目的一个特色的功能,希望大家多多提点。

 

**主要的思路:在表单中设置按钮,然后引用js的onclick事件,把文本框的值传到一个jsp页面,该jsp用request接收,进行数据库链接查询,存在就弹窗或直接在网页上显示提示结果‘用户已存在’,反之亦然。

 

这里只创建一个jsp文件,名为zhuce.jsp,用户点击“检测用户名”按钮时,用户的请求就会提交到zhuce.jsp(就是本页面),这是后就要在本页面里面进行数据库的链接,查询,储存在一个ResultSet对象里面。我们可以判断假如我们ResultSet对象是空的,那我们就知道数据库里面没有这个用户名哦,那时候我们就嵌套JavaScript代码,进行弹窗提示,或是直接提示展示在页面上(我这里使用JavaScript的innerHTML方法将提示直接显示在页面上),并且是原来变成灰色的,不可提交的提交按钮变成可提交状态(这里用JavaScript设置按钮的disabled属性的true和false),反之,也就是说,用户名已存在,所以就提示不给使用,不让你提交。

因为这种做法会刷新页面,文本框的内容会不见,那就是说无论有没有先这个用户,成功与否,我们都要再次把原来的用户名写回原来那里,所以就要在ResultSet对象是否为空判断那里,对错与否,里面嵌套的JavaScript代码里面都要进行对用户名文本框进行赋值,这个值为jsp传过来的用户名。(document.getElementById("username").value=<%=username%>;)

下面看看效果图:

输入用户名,不检测不给你提交

javascript判断真实用户 jsp判断用户名是否存在_文本框

输入用户名,检测有重复,不给提交

javascript判断真实用户 jsp判断用户名是否存在_sql_02

用户名检测,可以使用后,才能提交

javascript判断真实用户 jsp判断用户名是否存在_sql_03

 

下面提供源代码参考:

 


<%@ page contentType="text/html; charset=GB2312"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<%@page import="java.sql.*"%>


注册新用户

注册新用户

输入您的信息,用户名中不能包含有逗号,带*号必须填写

用户名:

 

 

密码:

 

再次输入密码:

 


 

 

 

返回

<% String username = request.getParameter("username"); out.print(username); try{ if(!username.equals(null)||!username.equals("")){ Class.forName("com.mysql.jdbc.Driver"); String strConn="jdbc:mysql://localhost:3306/lc?useUnicode=true&characterEncoding=utf-8&useSSL=false";; Connection conn=DriverManager.getConnection(strConn,"root","cjl3951295"); String sql="select username from admin where username='"+username+"'"; Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery (sql); if (rs.next()) { %> <% }else{ %> <% } rs.close ( ); stmt.close ( ); conn.close ( ); }else{%> <%} }catch(Exception ex){ ex.printStackTrace(); } %>

 


 



这种jsp+js实现的用户名检测是有刷新的,对于用户的体验效果,使用AJAX的异步处理用户名检测,实现无刷新检测,体验效果更佳。