来公司快打了三个月的酱油,最近领导让学习Ajax说以后的项目会用到,所以就边学习边写关于Ajax的博客,希望和大家交流学习,有不正确的地方请大家指正。下面贴一段今天刚写的入门级的代码,说一下自己在写代码过程中出现的错误。
注册页面:
regist.html
<!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>
<script language="JavaScript">
var xmlHttp; //Ajax核心对象名称
var flag; //定义标志位
function createXMLHttp(){ //创建XMLHttpRequest核心对象
if(window.XMLHttpRequest){ //判断当前使用的浏览器类型
xmlHttp=new XMLHttpRequest();//表示使用的是火狐内核的浏览器
}else{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");//表示使用的是IE内核的浏览器
}
}
function checkUserid(userid){
<span style="color:#FF0000;">createXMLHttp(); //建立xmlHttp核心对象</span>
//设置一个请求,通过地址重写的方式将userid传递到jsp中
xmlHttp.open("POST","CheckServlet?userid="+userid);
//设置请求完成之后处理的回调函数
xmlHttp.onreadystatechange=checkUseridCallback;
xmlHttp.send(null); //发送请求,不传递任何参数
document.getElementById("msg").innerHTML="正在验证...";
}
function checkUseridCallback(){ //定义回调函数
if(xmlHttp.readyState==4){ //数据返回完毕
if(xmlHttp.status==200){ //HTTP操作正常
var text=xmlHttp.responseText;//接受返回的内容
if(text=="true"){
flag=false; //无法提交表单
document.getElementById("msg").innerHTML="用户ID重复,无法使用!";
}else{
flag=true; //可以提交表单
document.getElementById("msg").innerHTML="此用户ID可以注册!";
}
}
}
}
function checkForm(){
return flag;
}
</script>
<form action="CheckServlet" method="post" οnsubmit="return checkForm()">
用户ID:<input type="text" name="userid" οnblur="checkUserid(this.value)"><span id="msg"></span><br>
姓 名<input type="text" name="name"><br>
密 码<input type="password" name="password"><br>
<input type="submit" value="注册">
<input type="reset" value="重置">
</form>
</body>
</html>
后台连接数据库以及判断数据库中是否存在相同ID:
CheckServlet.java
package com.Ajax.Servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class CheckServlet
*/
public class CheckServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private static String driverName="oracle.jdbc.driver.OracleDriver";
private String userName="system";
private String userPwd="zyz123";
private String dbUrl="jdbc:oracle:thin:@localhost:1521:orcl";
/**
* @see HttpServlet#HttpServlet()
*/
public CheckServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doPost(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html");
Connection conn=null;
PreparedStatement pstmt=null;
ResultSet rs=null;
PrintWriter out=response.getWriter();
String userid=request.getParameter("userid");
System.out.println(userid);
try{
Class.forName(driverName);
conn=DriverManager.getConnection(dbUrl,userName,userPwd);
String sql="Select count(userid) from ajax_user where userid=?";
pstmt=conn.prepareStatement(sql);
pstmt.setString(1, userid);
rs=pstmt.executeQuery();
if(rs.next()){
if(rs.getInt(1)>0){
out.print("true");
System.out.println("true");
}else{
out.print("false");
System.out.println("false");
}
}
out.close();
}catch(Exception e){
e.printStackTrace();
}finally{
try{
conn.close();
}catch(SQLException e){
e.printStackTrace();
}
}
}
}
上面就是一个简单的注册验证用户ID的代码了,我写代码却出现了以下几个错误:
一、由于关联数据库所以需要加上数据库的jar包,我没引用,这个错误在控制台会显示报错: java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver
二、 regist.html该代码中标红的地方我写成了 createRequest() 由于这个地方写错导致我运行程序时调用不了Ajax而且不报错,我查了好久才发现
照书敲都能出现简单的错误,以后还是要提醒自己细心。