动态更新Web页面

效果截图:
动态更新Web页面 - lishirong - The CTO of LiShirong

插入的数据可以及时的在当前页中进行显示,主要采用AJAX技术

静态页面:employeeList.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>员工列表</title>
<script type="text/javascript" language="javascript">
var xmlHttp;
var name;
var title;
var department;
var deleteID;
var EMP_PREFIX="emp-";
function createXMLHttpRequest(){
if(window.ActiveXObject){
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}else if(window.XMLHttpRequest){
xmlHttp=new XMLHttpRequest();
}
}
function addEmployee(){
name=document.getElementById("name").value;
title=document.getElementById("title").value;
department=document.getElementById("department").value;
action="add";
if(name==""||title==""||department==""){
return;
}
var url="servlet/EmployeeListServlet?"+createAddQueryString(name,title,department,"add")+
"&ts="+new Date().getTime();
createXMLHttpRequest();
xmlHttp.onreadystatechange=handleAddStateChange;
xmlHttp.open("GET",url,true);
xmlHttp.send(null);
}
function createAddQueryString(name,title,deparment,action){
var queryString="name="+name
+"&title="+title
+"&department="+department
+"&action="+action;
return queryString;
}
function handleAddStateChange(){
if(xmlHttp.readyState==4){
if(xmlHttp.status==200){
updateEmployeeList();
clearInputBoxes();
}else{
alert("Error while adding employee.");
}
}
}
function clearInputBoxes(){
document.getElementById("name").value="";
document.getElementById("title").value="";
document.getElementById("department").value="";
}
function deleteEmployee(id){
deleteID=id;
var url="servlet/EmployeeListServlet?"
+"action=delete"
+"&id="+id
+"&ts="+new Date().getTime();
createXMLHttpRequest();
xmlHttp.onreadystatechange=handleDeleteStateChange;
xmlHttp.open("GET",url,true);
xmlHttp.send(null);
}
function updateEmployeeList(){
var responseXML=xmlHttp.responseXML;
var status=responseXML.getElementsByTagName("status").item(0).firstChild.nodeValue;
status=parseInt(status);
if(status!=1){
return;
}
var row=document.createElement("tr");
var uniqueID=responseXML.getElementsByTagName("uniqueID")[0].firstChild.nodeValue;
row.setAttribute("id"+EMP_PREFIX+uniqueID);
row.appendChild(createCellWithText(name));
row.appendChild(createCellWithText(title));
row.appendChild(createCellWithText(department));
var deleteButton=document.createElement("input");
deleteButton.setAttribute("type","button");
deleteButton.setAttribute("value","Delete");
deleteButton.οnclick=function(){
deleteEmployee(uniqueID);
}
cell=document.createElement("td");
cell.appendChild(deleteButton);
row.appendChild(cell);
document.getElementById("employeeList").appendChild(row);
updateEmployeeListVisibility();
}
function createCellWithText(text){
var cell=document.createElement("td");
cell.appendChild(document.createTextNode(text));
return cell;
}
function handleDeleteStateChange(){
if(xmlHttp.readyState==4){
if(xmlHttp.status==200){
deleteEmployeeFromList();
}else{
alert("Error while deleting employee");
}
}
}
function deleteEmployeeFromList(){
var status=xmlHttp.responseXML.getElementsByTagName("status").item(0).firstChild.nodeValue;
status=parseInt(status);
if(status!=1){
return;
}
var rowToDelete=document.getElementById(EMP_PREFIX+deleteID);
var employeeList=document.getElementById("employeeList");
employeeList.removeChild(rowToDelete);
updateEmployeeListVisibility();
}
function updateEmployeeListVisibility(){
var employeeList=document.getElementById("employeeList");
if(employeeList.childNodes.length>0){
document.getElementById("employeeListSpan").style.display="";
}else{
document.getElementById("employeeListSpan").style.display="none";
}
}
</script>
</head>
<body bgcolor="#CCFFFF">
<h1 align="center">增加员工</h1>
<form action="#">
<table width="80%" border="0"> 
<tr>
<td>姓名:&nbsp;&nbsp;<input type="text" id="name"/></td>
<td>职位:&nbsp;&nbsp;<input type="text" id="title"/></td>
<td>部门:&nbsp;&nbsp;<input type="text" id="department"/></td>
</tr>
<tr>
<td colspan="3" align="center">
<input type="button" value="增加" οnclick="addEmployee();"/>
</td>
</tr>
</table>
</form>
<span id="employeeListSpan" style="display:none">
<h2>员工列表:</h2>
<table border="1" width="80%">
<tbody id="employeeList"></tbody>
</table>
</span>
</body>
</html>



处理的Servlet:EmployeeListServlet.java

package servlet;

import java.io.*;
import java.net.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class EmployeeListServlet extends HttpServlet {
protected void addEmployee(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
//Store the object in the database
String uniqueID=storeEmployee();
//Create the response XML
StringBuffer xml=new StringBuffer("<result><uniqueID>");
xml.append(uniqueID);
xml.append("</uniqueID>");
xml.append("</result>");
//Send the response back to the browser
sendResponse(res,xml.toString());
}
protected void deleteEmployee(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
String id=req.getParameter("id");
//Assume that a call is made to delete the employee from the database
//create the response XML
StringBuffer xml=new StringBuffer("<result>");
xml.append("<status>1</status>");
xml.append("</result>");
//Send the response back to the browser
sendResponse(res,xml.toString());
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

String action=request.getParameter("action");
if(action.equals("add")){
addEmployee(request,response);
}else if(action.equals("delete")){
deleteEmployee(request,response);
}
}

private String storeEmployee(){
String uniqueID="";
Random randomizer=new Random(System.currentTimeMillis());
for(int i=0;i<8;i++){
uniqueID+=randomizer.nextInt(9);
}
return uniqueID;
}
private void sendResponse(HttpServletResponse response,String responseText)
throws ServletException, IOException {
response.setContentType("text/xml");
response.getWriter().write(responseText);
}

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值