效果:

精灵图(来源:从百度注册中download下来的):

userVerify.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<style type="text/css">
*{
margin:0;
padding:0;
}
input{
height:24px;
}
span{
display:none;
float: right;
position: relative;
width: 250px;
top: 5px;
left: 5px;
height: 16px;
line-height: 14px;
padding-left: 20px;
background:url(img/reg_icons.png) -80px 0 no-repeat;
}
</style> </head>
<body>
<table>
<tr>
<td>用户名:</td>
<td><input type="text" name="uname" id="uname" onblur="checkUserName()"><span id="tip"></span></td>
</tr>
<tr>
<td colspan="2"><input type="button" value="注册"></td>
</tr>
</table>
<script type="text/javascript">
function checkUserName(){
var uname = document.getElementById("uname").value;
var xmlHttp;
if(window.XMLHttpRequest){
xmlHttp = new XMLHttpRequest();
}else{
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlHttp.onreadystatechange = function(){
//判断返回状态
if(xmlHttp.readyState == 4 && xmlHttp.status == 200){
document.getElementById("tip").style.display = "block";
var dataObj = eval("("+xmlHttp.responseText+")");
if(dataObj.exist == "success"){
document.getElementById("tip").innerText = "该用户可用!";
document.getElementById("tip").style.color = "#5BC92E";
document.getElementById("tip").style.backgroundPosition = "-80px 0";
}else if(dataObj.exist == "error"){
document.getElementById("tip").innerText = "请输入用户名!";
document.getElementById("tip").style.color = "#fc4343";
document.getElementById("tip").style.backgroundPosition = "-80px -24px";
}else{
document.getElementById("tip").innerText = "该用户已存在!";
document.getElementById("tip").style.color = "#fc4343";
document.getElementById("tip").style.backgroundPosition = "-80px -24px"; } } } xmlHttp.open("get","checkUserName?action=checkUserName&uname="+uname,true);
xmlHttp.send();
}
</script>
</body>
</html>

CheckUserNameAjaxServlet.java

package com.xxc.ajax;

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 CheckUserNameAjaxServlet extends HttpServlet{ /**
*
*/
private static final long serialVersionUID = 1L;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/html;charset=utf-8");
String action = req.getParameter("action");
if("checkUserName".equals(action)) {
this.checkUserName(req, resp);
}
} public void checkUserName(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { PrintWriter out = resp.getWriter();
String uname = req.getParameter("uname");
JSONObject resultJson = new JSONObject();//注意:使用此对象需要导入包,下面会介绍
if(uname.trim()==null || "".equals(uname.trim())){
resultJson.put("exist", "error");//用户名为空
}else if("xxc".equals(uname)) {
resultJson.put("exist", true);//用户名已存在
}else {
resultJson.put("exist", "success");//用户名不存在
}
out.println(resultJson);
out.flush();
out.close();
} }

web.xml

<servlet>
<servlet-name>CheckUserNameAjaxServlet</servlet-name>
<servlet-class>com.xxc.ajax.CheckUserNameAjaxServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>CheckUserNameAjaxServlet</servlet-name>
<url-pattern>/checkUserName</url-pattern>
</servlet-mapping>

实现ajax 的所需的json包(版本不一定是我所列的):

2.ajax+servlet实现注册时用户名验证的更多相关文章

  1. 用AJAX实现页面登陆以及注册用户名验证

     AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术.        AJAX 是一种用于创建快 ...

  2. PHP+Ajax 异步通讯注册验证

    HTML代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www. ...

  3. ajax基础语法、ajax做登录、ajax做用户名验证是否可用、ajax做关键字查询动态显示、ajax做用表格显示数据并增加操作列

    AJAX: AJAX 是一种用于创建快速动态网页的技术. 通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新.这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新.   ...

  4. 关于ajax用户名验证和jquery实现简单表单验证

    首先来说用户名验证: 前台: <tr> <td class="tableleft">教师编号</td> <td><input ...

  5. Myeclipse+AJAX+Servlet

    最近刚开始学AJAX的知识,这里介绍一个简单的Myeclipse+AJAX+Servlet项目. 此项目包含3个文件:index.jsp.check.java.还有一个需要配置的文件是:web.xml ...

  6. Django项目:CRM(客户关系管理系统)--51--42PerfectCRM实现AJAX全局账号注册

    #urls.py """PerfectCRM URL Configuration The `urlpatterns` list routes URLs to views. ...

  7. 利用Form组件和ajax实现的注册

    一.注册相关的知识点 1.Form组件 我们一般写Form的时候都是把它写在views视图里面,那么他和我们的视图函数也不影响,我们可以吧它单另拿出来,在应用下面建一个forms.py的文件来存放 2 ...

  8. apply-register-acl 参数允许FreeSWITCH分机注册/拨打不验证密码

    今天调试 发现 注册的分机 的 `Auth-User` 居然是 `unknown` !!! 怎么回事? 仔细对比检查 发现, internal profile 指定了 `apply-register- ...

  9. 通过 jsp+ajax+servlet+webservice 远程访问天气预报服务

    通过 jsp+ajax+servlet+webservice 远程访问天气预报服务   - webservice 客户端访问的方式     1. java代码来访问     2. ajax 方式异步加 ...

随机推荐

  1. 112. Path Sum二叉树路径和

    [抄题]: Given a binary tree and a sum, determine if the tree has a root-to-leaf path such that adding ...

  2. 深入理解mysql的隔离级别

    建表插入测试数据A> create table test(id int ,num int) ;Query OK, 0 rows affected (0.53 sec) A> insert ...

  3. [C++] Operator Overload

    Operator Overload NOTE1:  operator = must be overload as a member function NOTE2: An operator functi ...

  4. Linux发送邮件

    以下是自己收集的实用Linux下简单配置外部邮箱发送邮件的方法: 1.配置/etc/mail.rc,使用mail命令 # vim /etc/mail.rc ###调用外部邮箱   set from=t ...

  5. 斐波那契数列—java实现

    最近在面试的时候被问到了斐波那契数列,而且有不同的实现方式,就在这里记录一下. 定义 斐波那契数列指的是这样一个数列 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...

  6. [GO]多任务的资源竞争问题

    package main import ( "fmt" "time" ) func Printer(s string) { for _, data := ran ...

  7. HDU 6127 Hard challenge (极角扫描)

    题意:给定 n 个点,和权值,他们两两相连,每条边的权值就是他们两个点权值的乘积,任意两点之间的直线不经过原点,让你从原点划一条直线,使得经过的直线的权值和最大. 析:直接进行极角扫描,从水平,然后旋 ...

  8. CodeForces 540D Bad Luck Island (DP)

    题意:一个岛上有石头,剪刀和布,规则就不用说了,问你最后只剩下每一种的概率是多少. 析:很明显的一个概率DP,用d[i][j][k]表示,石头剩下 i 个,剪刀剩下 j 个,布剩下 k 个,d[r][ ...

  9. java中的继承(is a )和组合(has a)

    我们知道java语言有三大特性:封装,继承,多态 但是继承和封装却是一对有点矛盾的两个方面,怎么理解?? 我们想想:封装的目的是想让隐藏类中的属性和方法.但是在继承过程中,我们的子类肯定会继承父类的方 ...

  10. [LintCode笔记了解一下]64.合并排序数组

    Given two sorted integer arrays A and B, merge B into A as one sorted array. 思路: 因为A的后面的部分都是空的留出来给我们 ...