AJAX实例应用-1(注册时判断用户名是否存在)

1.首先附上我的注册页面源码。(这其中的User类没有很好的封装及分层,大家凑合着看,我会在最后贴上User的源码,中间的那段JavaScript是重中之重):

 

<% @ page language="java" import="java.util.*" pageEncoding="GB18030" %>
<% @ page import="com.ycringfinger.shopping.*"  %>
<%
    request.setCharacterEncoding(
"GB18030");
    
String action = request.getParameter("action");
    
if(action!=null && action.equals("register")){
        
String username = request.getParameter("username");
        
String password = request.getParameter("password");
        
String phone = request.getParameter("phone");
        
String addr = request.getParameter("addr");
        User u 
= new User();
        u.setUsername(username);
        u.setPassword(password);
        u.setPhone(phone);
        u.setAddr(addr);
        u.setRdate(
new Date(System.currentTimeMillis()));
        u.save();
%>
        
< center > 注册成功,谢谢 </ center >
<%
        return;
    }
%>
< html >
    
< head >
        
< title > 用户注册 </ title >
        
< script  language =JavaScript  src ="script/regcheckdata.js" ></ script >
        
< script  type ="text/javascript" >
            
var req;
            
function validate() {
                
var idField = document.getElementById("username");
                
var url = "validate.jsp?username=" + escape(idField.value);
                
if(window.XMLHttpRequest) {
                    req 
= new XMLHttpRequest();
                }
 else if (window.ActiveXObject) {
                    req 
= new ActiveXObject("Microsoft.XMLHTTP");
                }

                req.open(
"GET", url, true);
                req.onreadystatechange 
= callback;
                req.send(
null);
            }

            
            
function callback() {
                
if(req.readyState == 4{
                    
if(req.status == 200{
                        
var msg = req.responseXML.getElementsByTagName("msg")[0];
                        setMsg(msg.childNodes[
0].nodeValue)
                    }

                }

            }

            
            
function setMsg(msg) {
                
if(msg == "valid"{
                    document.getElementById(
"usermsg").innerHTML = "<font color='green'>恭喜你,该用户名尚未注册</font>"
                }
 else if(msg == "invalid"{
                    document.getElementById(
"usermsg").innerHTML = "<font color='red'>该用户名已注册</font>"
                }

            }

        
</ script >
    
</ head >

    
< body >
        
< form  name ="form"  action ="register.jsp"  method ="post"
            onSubmit
="return checkdata()" >  
            
< input  type ="hidden" name ="action"  value ="register" >
            
< table  width ="750"  align ="center"  border ="2" >
                
< tr >
                    
< td >
                        用户名:
                    
</ td >
                    
< td >
                        
< input  type ="text"  name ="username"  size ="30"  maxlength ="10"  onblur ="validate()" >< div  id ="usermsg" ></ div >
                    
</ td >
                
</ tr >
                
< tr >
                    
< td >
                        密码:
                    
</ td >
                    
< td >
                        
< input  type ="password"  name ="password"  size ="15"  maxlength ="12" >
                    
</ td >
                
</ tr >
                
< tr >
                    
< td >
                        密码确认:
                    
</ td >
                    
< td >
                        
< input  type ="password"  name ="password2"  size ="15"  maxlength ="12" >
                    
</ td >
                
</ tr >
                
< tr >
                    
< td >
                        电话:
                    
</ td >
                    
< td >
                        
< input  type ="text"  name ="phone"  size ="15"  maxlength ="12" >
                    
</ td >
                
</ tr >
                
< tr >
                    
< td >
                        地址:
                    
</ td >
                    
< td >
                        
< textarea  rows ="12"  cols ="80"  name ="addr" ></ textarea >
                    
</ td >
                
</ tr >
                
< tr >
                    
< td >
                        
< input  type ="submit"  value ="提交" >
                        
< input  type ="reset"  value ="重置" >
                    
</ td >
                
</ tr >
            
</ table >
        
</ form >
    
</ body >
</ html >

 

2.validate.jsp的源码如下(注意前面那几个设置属性如setContentType,setHeader等是必需的):

 

<% @ page language="java" import="java.util.*" pageEncoding="GB18030" %>
<% @ page import="com.ycringfinger.shopping.*"  %>
<%
    response.setContentType(
"text/xml");
    response.setHeader(
"Cache-Control""no-store");
    response.setHeader(
"Pragma""no-cache");
    response.setDateHeader(
"Expires"0);
    
    request.setCharacterEncoding(
"GB18030");
    
    
String userName = request.getParameter("username").trim();
    
if(User.userExists(userName)) {        
        response.getWriter().write(
"<msg>valid</msg>");
    } 
else {
        response.getWriter().write(
"<msg>invalid</msg>");
    }
%>

 

3.本人的User.java:(大家不要笑话)

 

package  com.ycringfinger.shopping;

import  java.sql.Connection;
import  java.sql.PreparedStatement;
import  java.sql.ResultSet;
import  java.sql.SQLException;
import  java.sql.Statement;
import  java.sql.Timestamp;
import  java.util.ArrayList;
import  java.util.Date;
import  java.util.Iterator;
import  java.util.List;

import  com.ycringfinger.shopping.util. * ;

public   class  User  {

    
private int id;
    
private String username;
    
private String password;
    
private String phone;
    
private String addr;
    
private Date rdate;

    
public int getId() {
        
return id;
    }


    
public void setId(int id) {
        
this.id = id;
    }


    
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 getPhone() {
        
return phone;
    }


    
public void setPhone(String phone) {
        
this.phone = phone;
    }


    
public String getAddr() {
        
return addr;
    }


    
public void setAddr(String addr) {
        
this.addr = addr;
    }


    
public Date getRdate() {
        
return rdate;
    }


    
public void setRdate(Date rdate) {
        
this.rdate = rdate;
    }


    
public void save() {
        Connection conn 
= DB.getConnection();
        String sql 
= "insert into user values (null, ?, ?, ?, ?, ?)";
        PreparedStatement pstmt 
= DB.getPreparedStatement(conn, sql);
        
try {
            pstmt.setString(
1, username);
            pstmt.setString(
2, password);
            pstmt.setString(
3, phone);
            pstmt.setString(
4, addr);
            pstmt.setTimestamp(
5new Timestamp(rdate.getTime()));
            pstmt.executeUpdate();
        }
 catch (SQLException e) {
            e.printStackTrace();
        }
 finally {
            DB.closePreparedStatement(pstmt);
            DB.closeConnection(conn);
        }

    }


    
public static List<User> getUsers() {
        List
<User> users = new ArrayList<User>();
        Connection conn 
= null;
        Statement stmt 
= null;
        ResultSet rs 
= null;
        
try {
            conn 
= DB.getConnection();
            stmt 
= DB.getStatement(conn);
            String sql 
= "select * from user";
            rs 
= DB.executeQuery(stmt, sql);
            
while (rs.next()) {
                User u 
= new User();
                u.setId(rs.getInt(
1));
                u.setUsername(rs.getString(
"username"));
                u.setPassword(rs.getString(
"password"));
                u.setPhone(rs.getString(
"phone"));
                u.setAddr(rs.getString(
"addr"));
                u.setRdate(rs.getTimestamp(
"rdate"));
                users.add(u);
            }

        }
 catch (SQLException e) {
            e.printStackTrace();
        }
 finally {
            DB.closeResultSet(rs);
            DB.closeStatement(stmt);
            DB.closeConnection(conn);
        }

        
return users;
    }


    
public static void deleteUser(int id) {
        Connection conn 
= null;
        Statement stmt 
= null;
        
try {
            conn 
= DB.getConnection();
            stmt 
= DB.getStatement(conn);
            stmt.executeUpdate(
"delete from user where id = " + id);
        }
 catch (Exception e) {
            e.printStackTrace();
        }
 finally {
            DB.closeStatement(stmt);
            DB.closeConnection(conn);
        }

    }


    
public static User validate(String username, String password)
            
throws UserNotFoundException, PasswordNotCorrectException {
        Connection conn 
= null;
        String sql 
= "select * from user where username = '" + username + "'";
        Statement stmt 
= null;
        ResultSet rs 
= null;
        User u 
= null;
        
try {
            conn 
= DB.getConnection();
            stmt 
= DB.getStatement(conn);
            rs 
= DB.executeQuery(stmt, sql);
            
if (!rs.next()) {
                
throw new UserNotFoundException();
            }
 else if (!rs.getString("password").trim().equals(password)) {
                
throw new PasswordNotCorrectException();
            }
 else {
                u 
= new User();
                u.setId(rs.getInt(
"id"));
                u.setUsername(rs.getString(
"username"));
                u.setPassword(rs.getString(
"password"));
                u.setPhone(rs.getString(
"phone"));
                u.setAddr(rs.getString(
"addr"));
                u.setRdate(rs.getTimestamp(
"rdate"));
            }

        }
 catch (SQLException e) {
            e.printStackTrace();
        }
 finally {
            DB.closeResultSet(rs);
            DB.closeStatement(stmt);
            DB.closeConnection(conn);
        }

        
return u;
    }


    
public void update(){
        Connection conn 
= DB.getConnection();
        String sql 
= "update user set username = ?, phone = ?, addr = ? where id = " + this.id;
        PreparedStatement pstmt 
= DB.getPreparedStatement(conn, sql);
        
try {
            pstmt.setString(
1, username);
            pstmt.setString(
2, phone);
            pstmt.setString(
3, addr);
            pstmt.executeUpdate();
        }
 catch (SQLException e) {
            e.printStackTrace();
        }
 finally {
            DB.closePreparedStatement(pstmt);
            DB.closeConnection(conn);
        }

    }


    
public static boolean userExists(String userName) {
        
boolean b = true;
        
        List
<User> users = User.getUsers();
        
for(Iterator<User> it=users.iterator(); it.hasNext(); ) {
            User u 
= it.next();
            
if(u.getUsername().equals(userName)) {

                b 
= false;
            }

        }

        
return b;
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值