ajax注册页面异步验证

ajax的原理大家可以看上图

如何获得Ajax对象?

XMLHttpRequest没有标准化,要区分浏览器。
function getXhr(){
var xhr = null;
if(window.XMLHttpRequest){
//非ie浏览器
xhr = new XMLHttpRequest();
}else{
//ie浏览器
xhr = new ActiveXObject(‘MicroSoft.XMLHttp‘);
}
return xhr;
}

下面我把代码贴出来:

1.注册页面regist.jsp

<%@page pageEncoding="utf-8" contentType="text/html;charset=utf-8" %>
<html>
	<head>
		<style>
			.tips{
				color:red;
			}
		</style>
		<script type="text/javascript" src="js/my.js"></script>
		<script type="text/javascript">
			function check_username(){
				//获得ajax对象
				var xhr = getXhr();
				//使用ajax对象发请求
				xhr.open(‘get‘,
				‘check_username.do?username=‘
				+$F(‘username‘),true);
				xhr.onreadystatechange=function(){
					//只有readyState等于4,才能获得
					//服务器返回的所有数据。
					if(xhr.readyState == 4){
						//判断服务器返回的数据是否正确
						if(xhr.status == 200){
							var txt = xhr.responseText;
							$(‘username_msg‘).innerHTML = txt;
						}else{
							$(‘username_msg‘).innerHTML = ‘验证出错‘;
						}
					}
				};
				$(‘username_msg‘).innerHTML = ‘正在验证...‘;
				xhr.send(null);
			}

			function check_number(){
				var xhr = getXhr();
				xhr.open(‘get‘,
				‘check_number.do?number=‘ 
				+ $F(‘number‘),true);
				xhr.onreadystatechange=function(){
					if(xhr.readyState == 4){
						var txt = xhr.responseText;
						$(‘number_msg‘).innerHTML = txt;
					}
				};
				xhr.send(null);
			}
		</script>
	</head>
	<body style="font-size:30px;font-style:italic;">
		<form action="regist.do" method="post">
			<fieldset>
				<legend>注册</legend>
				用户名:<input id="username" name="username" 
				onblur="check_username();"/>
				<span class="tips" id="username_msg"></span>
				<br/>
				真实姓名:<input name="name"/><br/>
				验证码:<input name="number" id="number" 
				onblur="check_number();"/>
				<span class="tips" id="number_msg"></span>
				<br/>
				<img src="checkcode" 
				onclick=""http://blog.51cto.com/viewpic.php?refimg=" + this.src=‘checkcode?‘ + Math.random();"/><br/>
				<input type="submit" value="提交"/>
			</fieldset>
		</form>
	</body>
</html>

2.获得ajax对象my.js

function $(id){
	return document.getElementById(id);
} 

function $F(id){
	return $(id).value;
}

function getXhr() {
	var xhr = null;
	if (window.XMLHttpRequest) {
				//非ie浏览器
		xhr = new XMLHttpRequest();
	} else {
				//ie浏览器
		xhr = new ActiveXObject("MicroSoft.XMLHttp");
	}
	return xhr;
}

3.servlet验证页面ActionServlet.Java

package 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 javax.servlet.http.HttpSession;

public class ActionServlet extends HttpServlet {

	public void service(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		response.setContentType("text/html;charset=utf-8");
		PrintWriter out = response.getWriter();
		String uri = request.getRequestURI();
		String action = uri.substring(uri.lastIndexOf("/"),
				uri.lastIndexOf("."));
		if(action.equals("/check_username")){

			if(1 == 2){
				throw new ServletException("");
			}
			String username =
				request.getParameter("username");
			if(username.equals("tom")){
				out.println("用户名存在");
			}else{
				out.println("用户名未被注册");
			}
		}else if(action.equals("/check_number")){
			String number1 = 
				request.getParameter("number");
			HttpSession session =
				 request.getSession();
			String number2 = 
				(String)session.getAttribute("number");
			if(number1.equalsIgnoreCase(number2)){
				out.println("验证码正确");
			}else{
				out.println("验证码错误");
			}
		}
		out.close();
	}

}

4.画验证码CheckcodeServlet.java

package web;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Random;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

public class CheckcodeServlet extends HttpServlet {
	private int width = 80;
	private int height = 30;
	public void service(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		/*
		 * 绘图
		 */
			//step1,创建一个内存映像对象(画布)
		BufferedImage image = 
			new BufferedImage(width,height,
					BufferedImage.TYPE_INT_RGB);
			//step2,获得画笔
		Graphics g = image.getGraphics();
			//step3,给笔上一个颜色
		Random r = new Random();
		g.setColor(new Color(r.nextInt(255),
				r.nextInt(255),r.nextInt(255)));
			//step4,绘图,先填充背景 
			g.fillRect(0, 0, width, height);
			//step5,绘图,给画笔再设置一个颜色,用来
			//绘图
			g.setColor(new Color(0,0,0));
			g.setFont(new Font(null,Font.BOLD,20));
			String number = r.nextInt(99999) + "";
			HttpSession session = 
				request.getSession();
			session.setAttribute("number", number);
			g.drawString(number, 10, 22);
		/*
		 * 输出
		 */
			//step1,设置content-type消息头,告诉浏览器
			//返回的是一个图片
			response.setContentType("image/jpeg");
			//step2,获得一个字节输出流
			OutputStream ops = 
				response.getOutputStream();
			//step3,将原始图片压缩,然后输出
			javax.imageio.ImageIO
			.write(image, "jpeg", ops);
			ops.close();

	}

}

5.配置文件web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" 
	xmlns="http://java.sun.com/xml/ns/j2ee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
	http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  <servlet>
    <servlet-name>ActionServlet</servlet-name>
    <servlet-class>web.ActionServlet</servlet-class>
  </servlet>
 <servlet>
    <servlet-name>checkcodeServlet</servlet-name>
    <servlet-class>web.CheckcodeServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>ActionServlet</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>checkcodeServlet</servlet-name>
    <url-pattern>/checkcode</url-pattern>
  </servlet-mapping>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>

代码我都贴出来了,只是一个简单的验证,来测试一下:

ajax是一种用来改善用户体验的技术,其实质是利用浏览器提供的一个特殊的对象(XMLHttpRequest对象,一般称之为ajax对象)异步地(当ajax对象向
服务器发请求时,浏览器不会销毁当前页面,用户仍然可以对当前页面做其它的操作)向服务器发送请求。 服务器返回的数据不再是一个完整的新的页面,而是部分数据,利用这些数据,更新当前页面。整个过程,页面无刷新,不打断用户的操作。

来自本人CSDN:http://blog.csdn.net/wudalang_gd/article/details/50812186

时间: 2024-08-09 06:34:40

ajax注册页面异步验证的相关文章

注册页面账号验证

1.首先用ajax传页面上的值,在账号<input>后面要记得写上<span id="er"></span>,不然不会提示账号能不能用,有没有被注册过 <script type="text/javascript"> function home(){ window.location.href="view/login.jsp"; } $(function(){ //账号验证 $("#Accou

HTML + CSS + JavaScript 实现注册页面信息验证(表单验证)

要求 创建一个注册页面,如下图. 然后再对注册信息进行判断,判断其是否符合要求.(如:密码6-16位字符,不能有空格等) 图片素材如下: 注册页面的整个框架 注册页面框架分析 页面内容主要分为三个部分: 我们可以使用三个块标签,可以将这三个部分分别放到每个块标签中. 注册页面框架的实现 第一部分:两个段落文本 <!-- 左边部分 --> <div class="rg_left"> <p>新用户注册</p> <p>USER RE

Jsp注册页面身份证验证

<!--身份证验证 --><script type="text/javascript">function isCardNo(Idcardnumber) { alert(11111); // 身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X var id=$("#Idcardnumber").val();//var id=$("#Idcardnumber")是获取In

java使用正则表达式对注册页面进行验证

1 package regex; 2 3 import java.util.Scanner; 4 import java.util.regex.Matcher; 5 import java.util.regex.Pattern; 6 7 public class registered { 8 9 public static void main(String[] args) { 10 //注册用户 11 Scanner sc=new Scanner(System.in); 12 System.ou

javaweb实现注册页面(数据库连接以及ajax验证)

先放效果图 可实现js实时验证        可实现ajax实时验证注册信息是否存在   页面实现要求 1登录账号:要求由6到12位字母.数字.下划线组成,只有字母可以开头:(1分) 2登录密码:要求显示“• ”或“*”表示输入位数,密码要求八位以上字母.数字组成.(1分) 3性别:要求用单选框或下拉框实现,选项只有“男”或“女”:(1分) 4学号:要求八位数字组成,前四位为“2018”开头,输入自己学号:(1分) 5姓名:输入自己的姓名: 5电子邮箱:要求判断正确格式[email protec

struts2+ajax实现异步验证

由于老师布置作业的需要,在添加管理员的时候,要实现验证添加的管理员的用户名是否在数据库中已经存在,然后再客户端给用户一个提示.我首先想到的就是利用ajax实现异步验证技术,由于利用的ssh框架,所以在这要对struts2和ajax进行整合,由于我还没把ajax的一些知识总结出来,所以在这也不提了,有关ajax的详细内容将会在以后的博客中写出来.现在我们就以我做的这个添加管理员,验证管理员的用户名是否存在来说一下这个struts2+ajax实现异步验证技术. 首先我们来看一下我们的form表单:

MVC验证09-使用MVC的Ajax.BeginForm方法实现异步验证

原文:MVC验证09-使用MVC的Ajax.BeginForm方法实现异步验证 MVC中,关于往后台提交的方法有: 1.Html.BeginForm():同步 2.Ajax.BeginForm():异步 3.js或jQuery提交后台 本文体验Ajax.BeginForm()方法.   View model using System; using System.ComponentModel.DataAnnotations;   namespace XHelent.Models { public

【java项目实践】详解Ajax工作原理以及实现异步验证用户名是否存在+源码下载(java版)

一年前,从不知道Ajax是什么,伴随着不断的积累,到现在经常使用,逐渐有了深入的认识.今天,如果想开发一个更加人性化,友好,无刷新,交互性更强的网页,那您的目标一定是Ajax. 介绍 在详细讨论Ajax是什么之前,先让我们花一分钟了解一下Ajax做什么.如图所示: 如上图展示给我们的就是使用Ajax技术实现的效果.伴随着web应用的越来越强大而出现的是等待,等待服务器响应,等待浏览器刷新,等待请求返回和生成新的页面成为了程序员们的最最头疼的难题.随着Ajax的出现使web应用程序变得更完善,更友

【java项目实践】具体解释Ajax工作原理以及实现异步验证username是否存在+源代码下载(java版)

一年前,从不知道Ajax是什么,伴随着不断的积累,到如今常常使用,逐渐有了深入的认识. 今天,假设想开发一个更加人性化,友好,无刷新,交互性更强的网页,那您的目标一定是Ajax. 介绍 在具体讨论Ajax是什么之前,先让我们花一分钟了解一下Ajax做什么.如图所看到的: 如上图展示给我们的就是使用Ajax技术实现的效果.伴随着web应用的越来越强大而出现的是等待.等待server响应,等待浏览器刷新.等待请求返回和生成新的页面成为了程序猿们的最最头疼的难题.随着Ajax的出现使web应用程序变得