js 代码
- <script type=< span="">"text/javascript">
- var xmlHttp;
- function createXMLHttpRequest() {
- if (window.ActiveXObject) {
- xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
- }
- else if (window.XMLHttpRequest) {
- xmlHttp = new XMLHttpRequest();
- }
- }
- function doStart() {
- createXMLHttpRequest();
- var url = "DynamicUpdate?task=reset";
- xmlHttp.open("GET", url, true);
- xmlHttp.onreadystatechange = startCallback;
- xmlHttp.send(null);
- }
- function startCallback() {
- if (xmlHttp.readyState == 4) {
- if (xmlHttp.status == 200) {
- setTimeout("pollServer()", 5000);
- refreshTime();
- }
- }
- }
- function pollServer() {
- createXMLHttpRequest();
- var url = "DynamicUpdateServlet?task=foo";
- xmlHttp.open("GET", url, true);
- xmlHttp.onreadystatechange = pollCallback;
- xmlHttp.send(null);
- }
- function refreshTime(){
- var time_span = document.getElementById("time");
- var time_val = time_span.innerHTML;
- var int_val = parseInt(time_val);
- var new_int_val = int_val - 1;
- if (new_int_val > -1) {
- setTimeout("refreshTime()", 1000);
- time_span.innerHTML = new_int_val;
- } else {
- time_span.innerHTML = 5;
- }
- }
- function pollCallback() {
- if (xmlHttp.readyState == 4) {
- if (xmlHttp.status == 200) {
- var message =
- xmlHttp.responseXML
- .getElementsByTagName("message")[0].firstChild.data;
- if (message != "done") {
- var new_row = createRow(message);
- var table = document.getElementById("dynamicUpdateArea");
- var table_body =
- table.getElementsByTagName("tbody").item(0);
- var first_row =
- table_body.getElementsByTagName("tr").item(1);
- table_body.insertBefore(new_row, first_row);
- setTimeout("pollServer()", 5000);
- refreshTime();
- }
- }
- }
- }
- function createRow(message) {
- var row = document.createElement("tr");
- var cell = document.createElement("td");
- var cell_data = document.createTextNode(message);
- cell.appendChild(cell_data);
- row.appendChild(cell);
- return row;
- }
- </script>
java 代码
- package ajax.foundations_of_ajax;
- 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;
- public class DynamicUpdateServlet extends HttpServlet {
- private int counter = 1;
- /**
- * Handles the HTTP
GET
method. - *
- * @param request
- * servlet request
- * @param response
- * servlet response
- */
- protected void doGet(HttpServletRequest request,
- HttpServletResponse response) throws ServletException, IOException {
- String res = "";
- String task = request.getParameter("task");
- String message = "";
- if (task.equals("reset")) {
- counter = 1;
- } else {
- switch (counter) {
- case 1:
- message = "Steve walks on stage";
- break;
- case 2:
- message = "iPods rock";
- break;
- case 3:
- message = "Steve says Macs rule";
- break;
- case 4:
- message = "Change is coming";
- break;
- case 5:
- message = "Yes, OS X runs on Intel - has for years";
- break;
- case 6:
- message = "Macs will soon have Intel chips";
- break;
- case 7:
- message = "done";
- break;
- }
- counter++;
- }
- res = "<message></message>" + message + "";
- PrintWriter out = response.getWriter();
- response.setContentType("text/xml");
- response.setHeader("Cache-Control", "no-cache");
- out.println("<response></response>");
- out.println(res);
- out.println("");
- out.close();
- }
- }