1.首先一个简单的jsp页面
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <html> <head> <title>ajax例子</title> <script type="text/javascript" src="js/check.js"></script> </head> <body> <a href="#" onclick="getStu()">所有学生信息</a> <div id="stuInfo"></div> </body> </html>
2.点击所有学生信息页面时,会调用check.js代码
var xmlHttpRequest;//定义为全局变量 function getStu() { xmlHttpRequest = new XMLHttpRequest(); xmlHttpRequest.open("post", "servlet/InfoServlet", true); xmlHttpRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xmlHttpRequest.send("name=" + "123"); xmlHttpRequest.onreadystatechange = call; } function call() { var stuInfo = document.getElementById("stuInfo"); if (xmlHttpRequest.readyState == 4) { if (xmlHttpRequest.status == 200) { var stuDom = xmlHttpRequest.responseXML; var stuList = stuDom.getElementsByTagName("student"); var tableNode = document.createElement("table");// 创建table tableNode.setAttribute("border", "1"); for ( var i = 0; i < stuList.length; i++) { var student = stuList[i]; var tr = tableNode.insertRow(i); for ( var j = 0; j < 3; j++) { var td = tr.insertCell(j); var str = student.childNodes[j]; var text = document.createTextNode(str.firstChild.nodeValue); td.appendChild(text); } } stuInfo.appendChild(tableNode); } } }
3.这时会XMLHttpRequest对象会与servlet对象进行交互
package servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import xmlUtil.GetXmlBuffer;
public class InfoServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/xml;charset=utf-8");
PrintWriter out = response.getWriter();
String buffer = GetXmlBuffer.getXmlBuffer();
out.println(buffer);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
4.servlet会调用GetXmlBuffer对象
package xmlUtil;
import java.util.List;
import sql.QueryStu;
import bean.Student;
public class GetXmlBuffer {
public static String getXmlBuffer(){
List<Student>list = new QueryStu().getStu();
StringBuffer buffer = new StringBuffer("<students>");
for(int i=0;i<list.size();i++){
Student stu = list.get(i);
buffer.append("<student>");
buffer.append("<id>"+stu.getId()+"</id>");
buffer.append("<name>"+stu.getName()+"</name>");
buffer.append("<sex>"+stu.getSex()+"</sex>");
buffer.append("</student>");
}
buffer.append("</students>");
String str = new String(buffer);
return str;
}
}
5.这里先把Student JavaBean文件加上
package bean;
public class Student {
private int id;
private String name;
private String sex;
.......//get,set方法
}
6.与数据交互
package sql;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class JdbcUtils {
private static Connection con = null;
private static String url = "jdbc:mysql://localhost:3306/test";
private static String user = "root";
private static String password = "1990";
static {
try {
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection(url, user, password);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
public static Connection getConnection() {
return con;
}
}
package sql;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import bean.Student;
public class QueryStu {
private static Connection conn = null;
static {
conn = JdbcUtils.getConnection();
}
public List<Student> getStu(){
List<Student> list = new ArrayList<Student>();
PreparedStatement ps = null;
String sql = "select * from student where id<11";
try {
ps = conn.prepareStatement(sql);
ResultSet rs = ps.executeQuery();
while(rs.next()){
Student stu = new Student();
stu.setId(rs.getInt(1));
stu.setName(rs.getString(2));
stu.setSex(rs.getString(3));
list.add(stu);
}
} catch (SQLException e) {
e.printStackTrace();
}
return list;
}
}
7.最后全局把握一下:
这个例子,xml处理时,没有使用dom4j,只是简单的用了字符串拼接的方法,然后在javascript中利用element把xml数据取出来,然后动态的添加到页面表格中