在此示例中,我們使用Ajax與數(shù)據(jù)庫進(jìn)行交互。無需太多的代碼。僅在服務(wù)器端頁面中寫入數(shù)據(jù)庫邏輯。
在這個(gè)例子中,在index.jsp文件中編寫了服務(wù)器端代碼。
需要按照以下步驟操作:
• 加載org.json.jar文件
• 創(chuàng)建輸入頁面以接收文本或數(shù)字
• 創(chuàng)建服務(wù)器端頁面以處理請(qǐng)求
第一步:加載org.json.jar文件
下載此示例,在WEB-INF/lib目錄中放入org.json.jar文件。
第二步:創(chuàng)建輸入頁面以接收文本或數(shù)字
在此頁面中,我們創(chuàng)建了一個(gè)從用戶獲取輸入的表單。當(dāng)用戶按任意鍵時(shí),調(diào)用sendInfo()函數(shù)。在這個(gè)函數(shù)中編寫了所有的ajax代碼。
只要準(zhǔn)備好狀態(tài)更改,就調(diào)用了getInfo()函數(shù)。它通過innerHTML屬性動(dòng)態(tài)地將返回的數(shù)據(jù)寫入網(wǎng)頁。
文件:table1.html
<html>
<head>
<script>
var request;
function sendInfo() {
var v = document.vinform.t1.value;
var url = "index.jsp?val=" + v;
if (window.XMLHttpRequest) {
request = new XMLHttpRequest();
}
else if (window.ActiveXObject) {
request = new ActiveXObject("Microsoft.XMLHTTP");
}
try {
request.onreadystatechange = getInfo;
request.open("GET", url, true);
request.send();
} catch (e) { alert("Unable to connect to server"); }
}
function getInfo() {
if (request.readyState == 4) {
var val = request.responseText;
document.getElementById('amit').innerHTML = val;
}
}
</script>
</head>
<body>
<marquee>
<h1>This is an example of ajax</h1>
</marquee>
<form name="vinform">
Enter id:<input type="text" name="t1" onkeyup="sendInfo()">
</form>
<span id="amit"> </span>
</body>
</html>
第三步:創(chuàng)建服務(wù)器端頁面以處理請(qǐng)求
在這個(gè)jsp頁面中,我們打印給定id的員工的編號(hào)和姓名。
文件:index.jsp
<%@ page import="java.sql.*"%>
<%
String s=request.getParameter("val");
if(s==null || s.trim().equals("")){
out.print("Please enter id");
}else{
int id=Integer.parseInt(s);
out.print(id);
try{
Class.forName("com.mysql.jdbc.Driver");
Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/mdb","root","root");
PreparedStatement ps=con.prepareStatement("select * from emp where id=?");
ps.setInt(1,id);
ResultSet rs=ps.executeQuery();
while(rs.next()){
out.print(rs.getInt(1)+" "+rs.getString(2));
}
con.close();
}catch(Exception e){
e.printStackTrace();
}
}
%>
執(zhí)行上面項(xiàng)目示例代碼,得到類似以下結(jié)果:

