index.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Ajax检测用户名</title>
<script type="text/javascript" src="ajax.js"></script>
</head>
<body>
<form name="myform">
用户名:<input type="text" name="username" onblur="checkname();">
<span id="checkbox"></span>
<!--
这里用于在执行后显示结果的地方
-->
</form>
</body>
</html>
ajax.js
// JavaScript Document
var XHR; // 定义一个全局对象
function createXHR() { // 首先我们得创建一个XMLHttpRequest对象
if (window.ActiveXObject) {// IE的低版本系类
XHR = new ActiveXObject('Microsoft.XMLHTTP');// 之前IE垄断了整个浏览器市场,没遵循W3C标准,所以就有了这句代码。。。但IE6之后开始有所改观
} else if (window.XMLHttpRequest) {// 非IE系列的浏览器,但包括IE7 IE8
XHR = new XMLHttpRequest();
}
}
function checkname() {
var username = document.myform.username.value;
createXHR();
XHR.open("GET", "checkUser.jsp?username=" + username, true);// true:表示异步传输,而不等send()方法返回结果,这正是ajax的核心思想
XHR.onreadystatechange = zhangshuang;// 当状态改变时,调用byhongfei这个方法,方法的内容我们另外定义
XHR.send(null);
}
function zhangshuang() {
if ((XHR.readyState == 4) || (XHR.status == 200)) {
{
var textHTML = XHR.responseText;
document.getElementById('checkbox').innerHTML = textHTML;
}
}
}
DB_Conn.java
package com.db;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class DB_Conn {
Connection conn;
Statement st;
public DB_Conn() {
conn_init();
}
void conn_init() {
setConnection();
setStatement();
}
public void setConnection() {
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection(
"jdbc:oracle:thin:@localhost:1521:orcl", "scott", "tiger");
} catch (Exception e) {
e.printStackTrace();
}
}
public void setStatement() {
try {
st = conn.createStatement();
} catch (SQLException e) {
e.printStackTrace();
}
}
public boolean checkUser(String username) {
String sql="select * from users where username='"+username+"'";
ResultSet rs;
try {
rs = st.executeQuery(sql);
if(rs.next())
{
conn.close();
return true;
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
return false;
}
}
checkUser.jsp
<%@ page contentType="text/html;charset=utf-8"%>
<%@ page import="com.db.DB_Conn"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK" />
<title>checkUser</title>
</head>
<body>
<%
String username = request.getParameter("username");
DB_Conn db=new DB_Conn();
if ("".equals(username)) {
out.println("<font color=red>用户名不能为空! </font>");
} else if (username.length() < 4 || username.length() > 20) {
out.println("<font color=red>用户名" + username
+ "不合法!(长度为4到20位,且不能使用?#=等特殊字符) </font>");
} else if (db.checkUser(username)) {
out.println("<font color=red>用户名" + username + "已经存在!</font>");
} else {
out.println("<font color=green>用户名" + username
+ "尚未存在,可以使用!</font>");
}
%>
</body>
</html>