周末无事,自己写了一个用户注册信息的,异步校验。不多说,直接上源码:

check.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    <title>基于AJAX校验的用户注册</title>  
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">    
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<script  src="js/jquery-1.8.2.min.js"></script>
<style>
#password,#email {
   margin-left:34px;
}
#username{
   margin-left:18px;
}
#checkcode {
   width: 60px;
   margin-left:18px;
}
#buttongroup {
  margin-left: 15%;
}
span{
  color: red;
  font-size: 12;
 // display:none;
  width:100px;
  height:20p;
}
#username,#password,#email,#confirmpassword {
width:120px;
}
#usercheck{
width:550px;
margin-left: 40%;
}
.userres{
width:100%;
}
</style>
<script>
$(document).ready(function(){
var username=$("#username");
var password=$("#password");
var confirmpassword=$("#confirmpassword");
var email=$("#email");
var username_msg=$("#username_msg");
var email_msg=$("#email_msg");
var password_msg=$("#password_msg");
 var emptytips="输入为空.";
var xmlHttp;    //用于保存XMLHttpRequest对象的全局变量
//用于创建XMLHttpRequest对象
function createXmlHttp() {
    //根据window.XMLHttpRequest对象是否存在使用不同的创建方式
    if (window.XMLHttpRequest) {
       xmlHttp = new XMLHttpRequest();                  //FireFox、Opera等浏览器支持的创建方式
    } else {
       xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");//IE浏览器支持的创建方式
    }
}
 function show(nexttarget,str){
 
  $(nexttarget).html(str); 
      $(nexttarget).css("display","block");
 }
 function hide(nexttarget){
 setTimeout(function(){
         $(nexttarget).hide(); 
 },5000);
 }
  $("#username").focus();
  var flag="0";
  $("input:text").bind("blur",function(e){
  var target=e.target;
  if(target.value==""){
  var nexttarget=$(this).next();
  show(nexttarget,emptytips);
  hide(nexttarget);
  }else{
  var userdata=$(this).val();
  flag=this.id;
  var query="flag="+flag+"&userdata="+userdata;
             createXmlHttp();
             xmlHttp.onreadystatechange = handler;
             xmlHttp.open("GET","queryInfro.action?"+query,true);
             xmlHttp.send(null);
  }
});
  function handler(){
 // debugger;
 var righttips=["该用户名可以使用.","该邮箱可以使用."];
 var errortips=["该用户名已存在.","该邮箱已存在."];
  var returnflag="";
  var flag2="";
     if(xmlHttp.readyState == 4&&xmlHttp.status == 200){
          returnflag=JSON.parse(xmlHttp.responseText).returnflag;
          flag2=JSON.parse(xmlHttp.responseText).flag;
          if(returnflag.trim()=="SUCCESS"){
              if(flag2.trim()=="username"){
                  show(username_msg,errortips[0]);
                  hide(username_msg);
                  }
              if(flag2.trim()=="email"){
                  show(email_msg,errortips[1]);
                  hide(email_msg);
                  }
              }else {
              if(flag2.trim()=="username"){
                      show(username_msg,righttips[0]);
                      hide(username_msg);
                  }
                  if(flag2.trim()=="email"){
                      show(email_msg,righttips[1]);
                      hide(email_msg);
                  }
             }
         }
  }
  $("form").bind("submit",function(){
      if(username.val()==""){
        show(username_msg,emptytips);
    hide(username_msg);
    return false;
      }
     if(email.val()==""){
       show(email_msg,emptytips);
       hide(email_msg);
       return false;
       }
     if(password.val()==""){
     show(password_msg,emptytips);
         hide(password_msg);
         return false;
         }
     if(password.val()!=confirmpassword.val()){
        show(password_msg,"两次密码输入不一致.");
        hide(password_msg);
        return false;
         }  
  });
});
</script>
  </head>
  <body>
  <form id="userform"  action="register.action" method="post">
  <center><h3>用户注册校验<h3/></center>
    <div id="usercheck">
    <div class="userres"><label>用户名:</label><input type="text" id="username" class="error"/><span id="username_msg"></span></div>
     <div class="userres" ><label>密码:</label><input type="password" id="password"><span id="password_msg"></span></div>
       <div class="userres"><label>确认 密码:</label><input type="password" id="confirmpassword"></div>
        <div class="userres"><label>邮箱:</label><input type="text" id="email"><span id="email_msg"></span></div>
       <div id="buttongroup"><input id="submitformbut" type="submit" value="提交"/><input type="reset" value="重置"/></div>
    </div>
  </form>
  </body>
</html>


struts,配置文件:struts.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN"
    "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<constant name="struts.devMode" value="true"></constant>
<constant name="struts.custom.i18n.resources" value="faq"></constant>
<constant name="struts.i18n.encoding" value="UTF-8"></constant>  
      <package name="faq" extends="json-default">
     <action name="getFaq" class="com.ajax.action.FaqAction" method="getFaqs">
   <result name="SUCCESS" type="json"> 
            </result>
   </action>
    <action name="getFaq" class="com.ajax.action.FaqAction" method="getFaqs">
   <result name="SUCCESS" type="json"> 
            </result>
   </action>
    </package>
     <package name="post" extends="json-default">
     <action name="queryInfro" class="com.ajax.action.CheckAction" method="queryExsit">
   <result name="SUCCESS" type="json"> 
            </result>
            <result name="ERROR" type="json"> 
            </result>
   </action>
   <action name="register" class="com.ajax.action.CheckAction" method="register">
   <result name="SUCCESS"> 
   ./MyJsp.jsp
            </result>
   </action>
   <action name="getPostList" class="com.ajax.action.PostAction" method="showPostListInfro">
   <result name="SUCCESS" type="json"> 
            </result>
   </action>
    </package>
</struts>


Action层,CheckAction.java

package com.ajax.action;
import com.ajax.service.CheckService;
import com.ajax.util.RandomValidateCode;
import com.opensymphony.xwork2.ActionSupport;
public class CheckAction extends ActionSupport {
public String flag;
public String userdata;
public String returnflag;
public String getReturnflag() {
return returnflag;
}
public void setReturnflag(String returnflag) {
this.returnflag = returnflag;
}
public CheckService getCheckservice() {
return checkservice;
}
public void setCheckservice(CheckService checkservice) {
this.checkservice = checkservice;
}
CheckService checkservice=new CheckService();
public String getFlag() {
return flag;
}
public void setFlag(String flag) {
this.flag = flag;
}
public String getUserdata() {
return userdata;
}
public void setUserdata(String userdata) {
this.userdata = userdata;
}
public String queryExsit(){
System.out.println("flag:"+flag);
Boolean returnVal=checkservice.checkUser(flag,userdata);
if(returnVal==true){
System.out.println("SUCCESS:"+SUCCESS);
returnflag="SUCCESS";
return "SUCCESS";
}else{
System.out.println("ERROR:"+ERROR);
returnflag="ERROR";
return "ERROR";
}
}
public String register(){
System.out.println("注册成功");
return "SUCCESS";
}
}
Service层,CheckService.java
package com.ajax.service;
import com.ajax.dao.CheckUserDao;
import com.ajax.daoimpl.CheckUserDaoImpl;
public class CheckService {
CheckUserDao checkdao=new CheckUserDaoImpl();
private String rowflag="";
public String checkUserName(){
return null;
}
public String checkUserEmail(){
return null;
}
public Boolean checkUser(String flag,String userdata) {
return checkdao.checkUserInfro(flag,userdata);
}
}


DAO层,CheckUserDao.java

package com.ajax.dao;
public interface CheckUserDao {
public Boolean checkUserInfro(String rowflag,String userdata);
}
DAO实现层,CheckUserDaoImpl.java
package com.ajax.daoimpl;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import com.ajax.dao.CheckUserDao;
import com.ajax.util.DB;
public class CheckUserDaoImpl implements CheckUserDao {
Connection conn=null;
Statement stmt=null;
ResultSet rs=null;
/*
 * 判断用户信息是否已存在
 * @see com.ajax.dao.CheckUserDao#checkUserInfro(java.lang.String, java.lang.String)
 */
public Boolean checkUserInfro(String flag, String userdata) {
String sql="select * from user where "+flag+"='"+userdata+"'";
System.out.println(sql);
conn=DB.getConn();
stmt=DB.getStatement(conn);
rs=DB.getResultSet(stmt, sql);
try {
if(rs.next()){
return true;
}else{
return false;
}
} catch (SQLException e) {
e.printStackTrace();
return false;
}
}
}


Model层,UserInfr.java

package com.ajax.model;
public class UserInfr {
public String username;
public String password;
public String email;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}