本来想做一个ajax连接数据库的例子,结果这个问题没有解决,实在太晚了,明天还要上班。错误地方在代码中已标出
下面是第一次载入页面时,由servlet中的getAll()方法得到的results值。
cjavavb
cbook,c,c authorjavabook112,java,ddlksdfvbbook,vb,vbauthor
下面是代码:
ajax1.htmlvar xmlHttp;
window.οnlοad=displayAll;
function displayAll()
{
createXMLHttpRequest();
var url="http://localhost:8888/test/servlet/AjaxLists?";
xmlHttp.onreadystatechange=handleStateChange;
url=url+createQueryString("all","all");
xmlHttp.open("GET",url,true);
xmlHttp.send(null);
}
function createXMLHttpRequest() {
if (window.ActiveXObject) {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
} else if (window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest();
}
}
function refreashList(id)
{
var selectList=document.getElementById(id);
option=selectList.options[selectList.selectedIndex].text;
var url="http://localhost:8888/test/servlet/AjaxLists?"+createQueryString(id,option);
createXMLHttpRequest();
xmlHttp.onreadystatechange=handleStateChange;
xmlHttp.open("GET",url,true);
xmlHttp.send(null);
}
function createQueryString(list,option)
{
var queryString="list="+list+"&option="+option;
return queryString;
}
function handleStateChange() {
if (xmlHttp.readyState == 4) {
if (xmlHttp.status == 200) {
updateLists("category");
updateLists("author");
updateBooks();
}
}
}
function updateLists(id)
{
var models=document.getElementById(id);
alert(xmlHttp.responseXML);
var results=xmlHttp.responseXML.getElementsByTagName(id);
if(results>0) //IE8调试工具说错误在这个地方。错误的参数个数或无效的参数属性值
{
clearElement(id);
var option=null;
option=document.createElement("option");
option.appendChild(document.createTextNode("All"));
models.appendChild(option);
for(var i=0;i
{
option=document.createElement("option");
option.appendChild(document.createTextNode(results[i].firstChild.nodeValue));
models.appendChild(option);
}
}
}
function updateBooks()
{
var models=document.getElementById("books");
var results=xmlHttp.responseXML.getElementByTagName("all");
var outMsg="";
for(var i=0;i
{
outMsg=outMsg+results[i].firstChild.nodeValue+"
";
}
models.innerHTML=outMsg;
}
function clearElement(id)
{
var models=document.getElementById(id);
while(models.childNodes.length>0)
{
models.removeChild(models.childNodes[0]);
}
}
Simple Application Form
category:
--图书种类--
Author:
--作者--
Server Response:
下面是servlet代码。
package com.zsc.ajax4;
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 java.sql.Statement;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class AjaxLists extends HttpServlet
{
private Connection con;
Statement s = null;
private PreparedStatement ps = null;
public void processRequest(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException
{
response.setContentType("text/html;charset=UTF-8");
String results = "";
String choice = request.getParameter("option");
System.out.println("list=" + request.getParameter("list") + "option="
+ request.getParameter("option"));
if (choice.equals("all") || choice.equals("All"))
{
results = getAll();
System.out.println(results);
} else
{
results = getPartial(request.getParameter("list"), request
.getParameter("option"));
}
response.getWriter().write(results.toString());
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
response.setHeader("Cache-Control", "no-cache");
processRequest(request, response);
}
private String getPartial(String list, String option)
{
StringBuffer results = new StringBuffer("");
try
{
if (list.equals("category"))
{
ps = con
.prepareStatement("SELECT DISTINCT author FROM books WHERE category=? order by author");
ps.setString(1, option);
ResultSet reAuthor = ps.executeQuery();
while (reAuthor.next())
{
results.append("");
results.append(reAuthor.getString(1));
results.append("");
// System.out.println(reAuthor.getString(1));
}
ps = con
.prepareStatement("SELECT title ,category,author FROM books where category=? order by title");
ps.setString(1, option);
ResultSet rsAll = ps.executeQuery();
while (rsAll.next())
{
results.append("");
results.append(rsAll.getString(1) + ","
+ rsAll.getString(2) + "" + rsAll.getString(3));
results.append("");
}
}
if (list.equals("author"))
{
ps = con
.prepareStatement("SELECT DISTINCT category FROM books WHERE author=? order by category");
ps.setString(1, option);
ResultSet reCategory = ps.executeQuery();
while (reCategory.next())
{
results.append("");
results.append(reCategory.getString(1));
results.append("");
// System.out.println(reCategory.getString(1));
}
ps = con
.prepareStatement("SELECT title ,category,author FROM books where author=? order by title");
ps.setString(1, option);
ResultSet rsAll = ps.executeQuery();
while (rsAll.next())
{
results.append("");
results.append(rsAll.getString(1) + ","
+ rsAll.getString(2) + "" + rsAll.getString(3));
results.append("");
}
}
} catch (SQLException e)
{
e.printStackTrace();
}
try
{
s.close();
} catch (SQLException e)
{
System.out.println("statement关闭异常:" + e);
e.printStackTrace();
}
results.append("");
return (results.toString());
}
private String getAll()
{
StringBuffer results=new StringBuffer("");
try
{
s=con.createStatement();
ResultSet rsCategory=s.executeQuery("SELECT DISTINCT category from books order by category");
while(rsCategory.next())
{
results.append("");
results.append(rsCategory.getString(1));
results.append("");
}
s=con.createStatement();
ResultSet rsAll=s.executeQuery("SELECT title,category,author FROM books order by title");
while(rsAll.next())
{
results.append("");
results.append(rsAll.getString(1)+","+rsAll.getString(2)+","+rsAll.getString(3));
results.append("");
}
} catch (SQLException e)
{
System.out.println("SQL异常:"+e);
e.printStackTrace();
}
try
{
s.close();
} catch (SQLException e)
{
e.printStackTrace();
}
results.append("");
return (results.toString());
}
public void init() throws ServletException
{
con = makeConnection();
}
private Connection makeConnection()
{
try
{
String dbUrl = "jdbc:mysql://127.0.0.1/mydb1";
String user = "root";
String password = "";
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection(dbUrl, user, password);
return con;
} catch (ClassNotFoundException e)
{
e.printStackTrace();
} catch (SQLException e)
{
System.out.println("SQL异常:"+e);
}
return con;
}
}