功能实现的思路:当通常一个网站需要注册用户信息的时候,往往会让用户起一个名字,但一般要求这个用户名称是不能重复的,为了判断新注册的用户填写的用户名是否已经存在,需要对填写的用户名称进行判断,实际项目开发时候注册成功的用户信息会存入数据库中,真正的判断是需要和数据库数据进行对比来决定用户名是否已经存在,但我这里仅仅是模拟这个功能,所以在后台对用户输入的用户名的处理比较简单,直接让他和一个字符串进行对比(手动滑稽),和字符串一样的话就提示用户这个用户名已经存在,不存在也会友善提醒用户这个名字可以使用。

1、设计用户注册界面:

 <table>
<tr>
<th>用户注册</th>
</tr>
<tr>
<td>用户名:</th>
<td>
<input type="text" id="userName" name="userName" onblur="checkUserName()"/>
<font id="img"></font>
</td>
</tr>
<tr>
<td>密码:</th>
<td><input type="password" id="password1" name="password1"/></td>
</tr>
<tr>
<td>确认密码:</th>
<td><input type="password" id="password2" name="password2"/></td>
</tr>
<tr>
<td><input type="submit" id="sb" value="注册"/></td>
<td><input type="button" id="button" value="重置密码" onclick="czmima()"/></td>
</tr>
</table>

2、利用Ajax技术实现请求向后台服务器的访问以及对返回结果的处理功能:

 <script type="text/javascript">
//简单的实现用户名和密码重置的功能
function czmima(){
document.getElementById("password1").value="";
document.getElementById("password2").value="";
document.getElementById("userName").value="";
}
function checkUserName() {
var userName = document.getElementById("userName").value;
//创建XMLHttpRequest对象
var xmlHttp = null;
if(window.XMLHttpRequest){
xmlHttp=new XMLHttpRequest();
}else{
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
//XMLHttpRequest对象请求后台服务
xmlHttp.onreadystatechange=function(){
if(xmlHttp.readyState==4&&xmlHttp.status==200){
var dataObject = eval("("+xmlHttp.responseText+")");
if(dataObject.exist){
//如果用户名存在,就会在文本框的后边显示一个X的图标,表示这个用户名称不可用
document.getElementById("img").innerHTML="<img src='no.png'/>&nbsp;该用户名称已经存在!";
}else{
//如果用户名存在,就会在文本框的后边显示一个“对号”的图标,表示这个用户名称可用
document.getElementById("img").innerHTML="<img src='ok.png'/>&nbsp;该用户名称可以使用!";
}
}
}
//规定请求类型、请求处理的地址以及是否使用异步请求处理。
//这里还需要把用户输入的用户名作为参数传给后台servlet用以判断
xmlHttp.open("get","checkUserNameServlet?userName="+userName,true);
//将请求发送给服务器进行处理
xmlHttp.send();
}
</script>

3、编写后台用于处理前端页面传入的userName参数的Servlet:

 package com.java1234.web;

 import java.io.IOException;
import java.io.PrintWriter; import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import net.sf.json.JSONObject; public class CheckUserNameServlet extends HttpServlet { /**
*
*/
private static final long serialVersionUID = 1L; @Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response);
} @Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//设置浏览器接收到请求是需要知道的处理格式(MIME)
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
//创建一个JSONObject对象,用于封装处理结果
JSONObject reslutJSon = new JSONObject();
//接收从前端传来的userName的参数
String userName = request.getParameter("userName");
//这里就是直接让前端传入的参数和一个字符串进行比较
if("Marry".equals(userName)) {
reslutJSon.put("exist", true);
}else {
reslutJSon.put("exist", false);
}
out.println(reslutJSon);
out.flush();
out.close();
} }

4、配置web.xlml文件,然后就能运行出结果了,这个需要注意的是,这个因为使用了JSON对象,所以程序运行要保证包含JSON的jar包。

  总结:实话讲这是一个简单到极致的功能实现,但对于一个初学者的我来说,我需要从最基础的知识点抓起,通过一个简单的实例我能搞清楚Ajax动态实现局部数据更新的大致过程,不贪多不贪复杂,一步一步来稳稳的走路其实速度并不慢!

使用Ajax和JSON实现注册时候验证用户名是否存在的功能的更多相关文章

  1. 利用Ajax和JSON实现关于查找省市名称的二级联动功能

    功能实现的思路:我们经常碰见网上购物时候填写收件地址会用到这个查找省市县的三级联动查找功能,我们可以利用Ajax和JSON技术模拟这个功能,说白了同样是使用Ajax的局部数据更新功能这个特性.因为省市 ...

  2. 利用jQuery实现的Ajax 验证用户名是否存在

    异步刷新实现方式有多种,也可以借助JS的多种框架,下面是使用jQuery框架实现的AJAX 验证用户名是否存在 jQuery.ajax概述 HTTP 请求加载远程数据. 通过jQuery 底层 AJA ...

  3. ssh整合问题总结--使用struts2+Ajax+jquery验证用户名是否已被注册

    在用户模块中的用户注册需求上,通常要进行用户名是否已被注册的验证,今天正好写了这个需求,把详细代码和所遇到的问题贴过来.在使用struts2+ajax时候,通常我们会返回json类型的数据,但是像上面 ...

  4. thinkphp+jquery+ajax前后端交互注册验证

    thinkphp+jquery+ajax前后端交互注册验证,界面如下 register.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1. ...

  5. Django——Ajax发送请求验证用户名是否被注册

    场景: 用户注册的时候,输入用户名之后,Ajax发送请求到后端,后端验证该用户名是否已经被注册,然后返回到注册页面提示用户. 1.模型: from django.db import models cl ...

  6. Ajax注册验证用户名是否存在 ——引自百度经验

    Ajax注册验证用户名是否存在 http://jingyan.baidu.com/article/a948d6515fdf870a2dcd2e85.html

  7. Ajax验证用户名是否被注册

    Ajax验证用户名是否被注册 var xmlHttp; function createXMLHttpRequest(){ // 创建XMLHttp请求对象 if(window.ActiveXObjec ...

  8. 《ajax学习》之ajax+JavaScript事件验证用户名是否可注册

    当用户注册时,服务器数据库需要对用户输入的用户信息(以用户名为例子)进行验证,在不刷新页面的情况下又需要页面和服务器进行数据请求,最好的方法是用ajax异步请求. 一.实现思路: 1.用户输入信息 2 ...

  9. django中ajax的使用以及避开CSRF 验证的方式

    ajax(Asynchronous Javascript And Xml) 异步javascript和XML ajax的优点 使用javascript技术向服务器发送异步请求 ajax无须刷新整个页面 ...

随机推荐

  1. golang 中操作nsq队列数据库

    首先先在本地将服务跑起来,我用的是docker-compose ,一句话6666 先新建一个docker-compose.yml version: '2' services: nsqlookupd: ...

  2. jquery.pjax 单页面, 无刷新打开页面.

    介绍: pushState+ajax=pjax 工作原理: 什么是pjax? 现在很多网站(facebook, twitter)都支持这样的一种浏览方式, 当你点击一个站内的链接的时候, 不是做页面跳 ...

  3. 【bzoj3589】动态树 树链剖分+树链的并

    题解: 树链剖分是显然的 问题在于求树链的并 比较简单的方法是 用线段树打标记覆盖,查询标记区间大小 Qlog^2n 代码: #include <bits/stdc++.h> using ...

  4. Python_list部分功能介绍

    x.append():在列表尾部添加一个元素 x.clear():把列表清空 x.count():判断某个元素出现的次数 x.extend():合并两个列表,或者一个元组 x.index():获取元素 ...

  5. libssl.so.10: cannot open shared object file: No such file or directory

    今天在使用yum安装东西的时候报错 yum list There was a problem importing one of the Python modulesrequired to run yu ...

  6. openstack2 kvm

    一.kvm安装 1.首先虚拟机的话需要打开虚拟化功能,服务器的话需要在bios中设置 2.安装kvm用户态管理工具qemu-kvm 和 用来管理kvm虚拟机的插件libvirt和创建虚拟机用的virt ...

  7. LOJ#6433. 「PKUSC2018」最大前缀和 状压dp

    原文链接https://www.cnblogs.com/zhouzhendong/p/LOJ6433.html 题解 枚举一个集合 S ,表示最大前缀和中包含的元素集为 S ,然后求出有多少个排列是这 ...

  8. 给定数组长度2n,分成n对,求n对最小元素之和最大

    给定长度为 2n 的数组, 你的任务是将这些数分成 n 对, 例如 (a1, b1), (a2, b2), ..., (an, bn) ,使得从1 到 n 的 min(ai, bi) 总和最大. 示例 ...

  9. day30 网络编程 之进程,线程,协程

    进程点进去 线程点进去 协程点进去 什么是进程 进程(有时称为重量级进程)是一个执行中的程序.每个进程都拥有自己的地址空间.内存.数据栈以及其他用于跟踪执行的辅助数据.同一个程序执行两次,属于是两个不 ...

  10. Java 之 CSS

    1.CSS a.定义:CSS 指层叠样式表 b.意义:为了解决内容与表现分离的问题 c.特点:多个样式可层叠为一 2.用法: a.行内样式:style <span style="col ...