Ajax实现注册用户名验证

ajax技术的实现流程:

 

1.xmlHttp = new XMLHttpRequest();            //创建XMLHttpRequest对象。

 

2.xmlHttp.open("GET",url,true);                   //注册处理事件的url
3.xmlHttp.onreadystatechange = callback;  //注册回传函数
4.xmlHttp.send(null);                                   //发送请求

 

5.function callback(){                                   //在回调方法中进行请求状态码判断。
 if(xmlHttp.readyState == 4){
  if(xmlHttp.status == 200){
    showResult();//回传处理                           //请求回应顺利,就执行回传处理。
  }
 }
}

 

6.function showResult() {                           //读取请求得到的信息。进行分支处理。
 var message = xmlHttp.responseXML.getElementsByTagName("message")[0];
 var msg = message.firstChild.data;
 if(msg=="0"){
  nameEnable = true;
  checkUserNameMsg.innerHTML = "用户名可以使用";
  return true;
 }else if(msg=="1"){
  nameEnable = false;
  checkUserNameMsg.innerHTML = " 用户名已存在,请重新输入";
  
  return false;
 }
 
}//end function

以下是一个完整的例子:

jsp页面。在用户名字段失去焦点时,进行ajax验证用户名

本实例使用的是Mysql 数据库。user_info数据表。

字段:

id        int自增长,主键

user_name varchar(20) null

user_pwd varchar(16) null

 

使用Hibernate框架反向数据表为实体Bean

reg.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> My JSP 'reg.jsp' starting page

用 户 名: * 您的用户名必须是唯一的
密 码: * 设置您的登陆密码4-16位

Servlet文件Check.java

package com.ajax1.servlets; import java.io.IOException; import java.util.List; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.ajax1.hbm.UserInfoDAO; /** * @author hanson * @created Jul 24, 2009 5:01:16 PM * @version V1.0.0 */ public class Check extends HttpServlet { /** * The doGet method of the servlet.
* * This method is called when a form has its tag value method equals to get. * * @param request the request send by the client to the server * @param response the response send by the server to the client * @throws ServletException if an error occurred * @throws IOException if an error occurred */ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //Serverlet根据请求的参数,验证完成后,以xml格式写下验证信息。 //供JSP页面的XMLHttpRequest对象读取。 response.setContentType("text/xml"); response.setHeader("Cache-Control", "no-cache"); //取得前台参数。 String username=request.getParameter("name"); //参数解密 username = EscapeUnescape.unescape(username);//将字符串反编码,得到Unicode数据 UserInfoDAO dao = new UserInfoDAO(); //验证用户名 List list = dao.findByProperty("userName", username); //根据DB返回的结果,写下相应的XML信息。 if (list!=null&&list.size()>0){ response.getWriter().write("1"); }else{ response.getWriter().write("0"); } } }

URL解码类EscapeUnescape.java

 /** * */ package com.ajax1.servlets; /** * @author hanson * @created Jul 24, 2009 5:12:50 PM * @version V1.0.0 */ public class EscapeUnescape { /** * 对字符串进行编码的,使之成为url格式的数据 * @param src 要编码的字符串 * @return 返回编码后的字符串 */ public static String escape(String src) { int i; char j; StringBuffer tmp = new StringBuffer(); tmp.ensureCapacity(src.length() * 6); for (i = 0; i < src.length(); i++) { j = src.charAt(i); if (Character.isDigit(j) || Character.isLowerCase(j) || Character.isUpperCase(j)) tmp.append(j); else if (j < 256) { tmp.append("%"); if (j < 16) tmp.append("0"); tmp.append(Integer.toString(j, 16)); } else { tmp.append("%u"); tmp.append(Integer.toString(j, 16)); } } return tmp.toString(); } /** * 对url格式的数据进行解码,使之成为可用的Unicode数据 * @param src 需要解码的字符串,通常是在jsp页面使用escape()方法进行编码得到 * @return 返回解码后的数据 */ public static String unescape(String src) { StringBuffer tmp = new StringBuffer(); tmp.ensureCapacity(src.length()); int lastPos = 0, pos = 0; char ch; while (lastPos < src.length()) { pos = src.indexOf("%", lastPos); if (pos == lastPos) { if (src.charAt(pos + 1) == 'u') { ch = (char) Integer.parseInt(src .substring(pos + 2, pos + 6), 16); tmp.append(ch); lastPos = pos + 6; } else { ch = (char) Integer.parseInt(src .substring(pos + 1, pos + 3), 16); tmp.append(ch); lastPos = pos + 3; } } else { if (pos == -1) { tmp.append(src.substring(lastPos)); lastPos = src.length(); } else { tmp.append(src.substring(lastPos, pos)); lastPos = pos; } } } return tmp.toString(); } }

你可能感兴趣的:(Java,ajax,xmlhttprequest,function,string,callback,stylesheet)