在很多的注册页面都会引用到用户名检测的功能,这里我就自己用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%>;)
下面看看效果图:
输入用户名,不检测不给你提交
输入用户名,检测有重复,不给提交
用户名检测,可以使用后,才能提交
下面提供源代码参考:
<%@ 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的异步处理用户名检测,实现无刷新检测,体验效果更佳。