1. 程式人生 > >Ajax非同步互動,判斷使用者名稱是否被佔用

Ajax非同步互動,判斷使用者名稱是否被佔用

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>
</head>
<body>
	<form action="#" method="post">
		<table>
			<tr>
				<td>使用者名稱:</td>
				<td><input type="text" name="username" onblur="checkUsername(this)"/></td>
				<td><span id="username_msg"></span></td>
			</tr>
			<tr>
				<td>密碼:</td>
				<td><input type="text" name="password"/></td>
			</tr>
			<tr>
				<td colspan="2"><input type="submit" value="註冊" id="sub"/></td>
			</tr>
		
		
		</table>
	
	</form>
</body>
<script type="text/javascript">
	function checkUsername(obj){
		//建立核心物件
		xmlhttp=null;
		if(window.XMLHttpRequest){
			xmlhttp=new XMLHttpRequest();
		}else if(window.ActiveXObject){
			xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
		}
		//編寫回調函式
		xmlhttp.onreadystatechange=function(){
			//請求伺服器 返回相應的操作  回撥函式
			if(xmlhttp.readyState==4&&xmlhttp.status==200){
				if(xmlhttp.responseText==1){
					//使用者名稱可用
					document.getElementById("username_msg").innerHTML="<font color='green'>使用者名稱可以使用</font>";
					document.getElementById("sub").disabled=false;
				}else{
					//使用者名稱不可用
					document.getElementById("username_msg").innerHTML="<font color='green'>使用者名稱不可以使用</font>";
					document.getElementById("sub").disabled=true;
				}
			}
			
		}
		//open
		xmlhttp.open("post","/ajax_/check");
		//設定請求頭
		xmlhttp.setRequestHeader("content-type","application/x-www-form-urlencoded");
		//send
		xmlhttp.send("username="+obj.value);
	}
</script>
</html>

bean

package com.huida.bean;

public class User {
	private int id;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	private String username;
	private String password;
	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;
	}
}

servlet

package com.huida.servlet;

import java.io.IOException;

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

import com.huida.bean.User;
import com.huida.service.UserService;


public class CheckUserNameServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//設定編碼
		//接收使用者
		String username=request.getParameter("username");
		username=new String(username.getBytes("iso-8859-1"),"utf-8");
		User user=new UserService().checkUserName(username);
		if(user==null){
			response.getWriter().println("1");
		}else{
			response.getWriter().print("0");
		}
	}

	
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

service

package com.huida.service;

import com.huida.bean.User;
import com.huida.dao.UserDao;

public class UserService {

	public User checkUserName(String username) {
		// TODO Auto-generated method stub
		return new UserDao().getUserByName(username);
	}

}

dao

package com.huida.dao;

import java.sql.SQLException;

import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;

import com.huida.bean.User;
import com.huida.utils.DataSourceUtils;

public class UserDao {

	public User getUserByName(String username) {
		QueryRunner qr=new QueryRunner(DataSourceUtils.getDataSource());
		String sql = "select * from user where username=?limit 1";
		
		try {
			return qr.query(sql, new BeanHandler<>(User.class),username);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return null;
	}
	
}