`
孔雀王子
  • 浏览: 42671 次
  • 性别: Icon_minigender_1
  • 来自: 河北
文章分类
社区版块
存档分类
最新评论

使用JavaScript+Ajax+Json实现的雇员信息管理系统(含分页)(附完整案例下载)

阅读更多

        写完这个雇员信息管理系统后,让我感受最深的是JSON的数据结构确实比XML更为优秀,但这并意味着JSON就可以代替XML,而作为轻量级开发,JSON应是首选。总之,JavaScript+Ajax在解析JSON类型的数据方面真的比XML简单、容易。下面贴出一些核心代码及效果图,完整案例请在本文最后下载。

1、数据分页代码:

function empInfo(){

	var tbl = document.getElementById("tbl");

	tbl.style.display = "none";

	var xhr=getXhr();
	
	xhr.open("GET", "./employee.do?symbol=pageInfo&page=" + nowPage
			+ "&pageSize=" + pageSize, true);
	
	xhr.send();
	
	xhr.onreadystatechange=function(){
	
		if(xhr.readyState==4&&xhr.status==200){
		
			var obj=eval("("+xhr.responseText+")");
			
			empInfoTool(obj);
			
		}
		
	}
			
}

2、获取总页数: 

//获取总页数
function getCountPage(){
			
	var tbl = document.getElementById("tbl");

	tbl.style.display = "none";
	
	var countRecord=0;
	
	var xhr=getXhr();
	
	xhr.open("GET","./employee.do?symbol=findAll",true);
	
	xhr.send();
	
	xhr.onreadystatechange=function(){
	
		if(xhr.readyState==4&&xhr.status==200){
		
			var obj=eval("("+xhr.responseText+")");
			
			countRecord=obj.length;
			
			countPage = (countRecord % pageSize == 0 ? countRecord / pageSize
					: Math.ceil(countRecord / pageSize));
		
		}
	
	}

}

 3、最为核心的代码:

//将雇员信息转化成页面表格显示
function empInfoTool(obj){

	var itbody = document.getElementById("itbody");
			
	itbody.innerText = "";
			
	for(var i=0;i<obj.length;i++){
			
		var tr=document.createElement("tr");
				
		var delbtn = document.createElement("input");

		var upbtn = document.createElement("input");

		delbtn.setAttribute("type", "button");

		upbtn.setAttribute("type", "button");

		delbtn.setAttribute("value", "删除");

		upbtn.setAttribute("value", "编辑");
				
		var empno=document.createElement("td");
				
		var ename=document.createElement("td");
				
		var job=document.createElement("td");
				
		var mgr=document.createElement("td");
				
		var hiredate=document.createElement("td");
				
		var sal=document.createElement("td");
				
		var comm=document.createElement("td");
				
		var deptno=document.createElement("td");
				
		var udtd=document.createElement("td");
				
		empno.appendChild(document.createTextNode(obj[i].empno));
				
		ename.appendChild(document.createTextNode(obj[i].ename));
				
		job.appendChild(document.createTextNode(obj[i].job));
				
		mgr.appendChild(document.createTextNode(obj[i].mgr));
		
		var date=new Date(obj[i].hiredate.time);
		
		var str=getFormatDate(date);
		
		hiredate.appendChild(document.createTextNode(str));
				
		sal.appendChild(document.createTextNode(obj[i].sal));
				
		comm.appendChild(document.createTextNode(obj[i].comm));
				
		deptno.appendChild(document.createTextNode(obj[i].deptno));
				
		udtd.appendChild(upbtn);
				
		udtd.appendChild(delbtn);
				
		tr.appendChild(empno);
				
		tr.appendChild(ename);
				
		tr.appendChild(job);
				
		tr.appendChild(mgr);
			
		tr.appendChild(hiredate);
				
		tr.appendChild(sal);
				
		tr.appendChild(comm);
				
		tr.appendChild(deptno);
				
		tr.appendChild(udtd);
				
		itbody.appendChild(tr);
				
		//删除雇员信息
		delbtn.onclick=function(){
			
		var empno = this.parentNode.parentNode.firstChild.innerHTML;			
		
		var xhr=getXhr();
					
		xhr.open("GET", "./employee.do?symbol=delete&empno="+ empno, true);	
										
		xhr.send();
					
		xhr.onreadystatechange = function() {

			if (xhr.readyState == 4 && xhr.status == 200) {
			
				var obj=eval("("+xhr.responseText+")");
								
				empInfoTool(obj);	

			}
			
		}
		
		}
		
		//更新雇员信息
		upbtn.onclick=function(){
		
			var tbl = document.getElementById("tbl");

			tbl.style.display = "block";
			
			var empno_tr=$("empno_tr");
			
			empno_tr.style.display="none";
			
			var addbtn=$("addbtn");
			
			addbtn.style.display="none";
			
			var tr_emp = this.parentNode.parentNode;

			var emp = tr_emp.childNodes;

			for ( var i = 0; i < emp.length - 1; i++) {

				if (emp[i].nodeType == 1) {

					switch (i) {

						case 0:

						$("empno").value = emp[i].innerHTML;

						break;

						case 1:

						$("ename").value = emp[i].innerHTML;

						break;

						case 2:

						$("job").value = emp[i].innerHTML;

						break;

						case 3:

						$("mgr").value = emp[i].innerHTML;
	
						break;

						case 4:

						$("hiredate").value = emp[i].innerHTML;

						break;

						case 5:

						$("sal").value = emp[i].innerHTML;

						break;

						case 6:

						$("comm").value = emp[i].innerHTML;

						break;

						case 7:

						var deptno = emp[i].innerHTML;
						
						var xhr = getXhr();

						xhr.open("GET", "./dept.do", true);

						xhr.send();

						xhr.onreadystatechange = function() {

							if (xhr.readyState == 4&& xhr.status == 200) {

								var obj = eval("("+xhr.responseText+")");

								DeptsInfo(obj, deptno);

							}

						}

						break;
						
					}
				
				}
			
			}
		
		}
					
	}//for循环结束
	
	var pagediv = document.getElementById("pagediv");

	if (!pagediv.hasChildNodes()) {

		displayPage();
		
	}
	
	//分页事件处理
	startPage.onclick = function() {

		nowPage = 1;

		empInfo();

	}

	pageUp.onclick = function() {

		if (nowPage - 1 > 1) {

			nowPage -= 1;

		} else {

			nowPage = 1;
		}

		empInfo();

	}

	pageDown.onclick = function() {

		if (nowPage + 1 >= countPage) {

			nowPage = countPage;

		} else {

			nowPage += 1;

		}

		empInfo();

	}

	endPage.onclick = function() {

		nowPage = countPage;

		empInfo();

	}
	
}

 4、部分servlet代码:

public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		response.setContentType("application/json;charset=utf-8");

		request.setCharacterEncoding("utf-8");

		String symbol = request.getParameter("symbol");

		String pageNo = request.getParameter("page") == null ? "1" : request
				.getParameter("page");

		int nowPage = Integer.parseInt(pageNo);

		int pageSize = request.getParameter("pageSize") == null ? 5 : Integer
				.valueOf(request.getParameter("pageSize"));

		if ("findAll".equals(symbol)) {

			EmployeeService esi = new EmployeeServiceImpl();

			List<Employee> emps = esi.findAll();

			JSONArray ja = JSONArray.fromObject(emps);

			response.getWriter().print(ja);

		} else if ("pageInfo".equals(symbol)) {

			EmployeeService esi = new EmployeeServiceImpl();

			List<Employee> emps = esi.getNowPageInfo(nowPage, pageSize);

			JSONArray ja = JSONArray.fromObject(emps);

			response.getWriter().print(ja);

		} else if ("delete".equals(symbol)) {

			int empno = Integer.parseInt(request.getParameter("empno"));

			EmployeeService esi = new EmployeeServiceImpl();

			esi.deleteById(empno);

			request.getRequestDispatcher("./employee.do?symbol=pageInfo")
					.forward(request, response);

		} else if ("update".equals(symbol)) {

			int empno = Integer.parseInt(request.getParameter("empno"));

			String ename = request.getParameter("ename");

			String job = request.getParameter("job");

			int mgr = Integer.valueOf(request.getParameter("mgr"));

			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");

			Date hiredate = null;

			try {

				hiredate = sdf.parse(request.getParameter("hiredate"));

			} catch (ParseException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}

			double sal = Double.valueOf(request.getParameter("sal"));

			double comm = Double.valueOf(request.getParameter("comm"));

			int deptno = Integer.valueOf(request.getParameter("deptno"));

			Employee employee = new Employee();

			employee.setEmpno(empno);

			employee.setEname(ename);

			employee.setJob(job);

			employee.setMgr(mgr);

			employee.setHiredate(hiredate);

			employee.setSal(sal);

			employee.setComm(comm);

			employee.setDeptno(deptno);

			EmployeeService esi = new EmployeeServiceImpl();

			esi.update(employee);

			request.getRequestDispatcher("./employee.do?symbol=pageInfo")
					.forward(request, response);

		} else if ("add".equals(symbol)) {

			int empno = Integer.parseInt(request.getParameter("empno"));

			String ename = request.getParameter("ename");

			String job = request.getParameter("job");

			int mgr = Integer.valueOf(request.getParameter("mgr"));

			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");

			Date hiredate = null;

			try {

				hiredate = sdf.parse(request.getParameter("hiredate"));

			} catch (ParseException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}

			double sal = Double.valueOf(request.getParameter("sal"));

			double comm = Double.valueOf(request.getParameter("comm"));

			int deptno = Integer.valueOf(request.getParameter("deptno"));

			Employee employee = new Employee();

			employee.setEmpno(empno);

			employee.setEname(ename);

			employee.setJob(job);

			employee.setMgr(mgr);

			employee.setHiredate(hiredate);

			employee.setSal(sal);

			employee.setComm(comm);

			employee.setDeptno(deptno);

			EmployeeService esi = new EmployeeServiceImpl();

			esi.insert(employee);

			request.getRequestDispatcher("./employee.do?symbol=pageInfo")
					.forward(request, response);

		}

	}

 

另外还有Dao包下的实现代码,由于实在太多,这里就不再贴出来了,详细内容请下载完整案例。以下是效果图:



  


 

 

 下面是完整案例压缩包:

  • 大小: 70.2 KB
  • 大小: 23.3 KB
分享到:
评论

相关推荐

    学生信息管理系统(Java+HTML+CSS+Javascript+AJAX)

    全栈实现学生信息管理系统,未使用框架,适合初学web开发者。压缩包中包括前端、后端、数据库(数据库建表文件StudentMS\web\sql) 前端:html、css、JavaScript、jquery、ajax 后端:java、jdbc、servlet、org.json...

    【ASP.NET编程知识】asp.net中利用Jquery+Ajax+Json实现无刷新分页的实例代码.docx

    "ASP.NET编程知识:ASP.NET中利用Jquery+Ajax+Json实现无刷新分页的实例代码" 本文将详细介绍如何使用Jquery、Ajax和Json技术在ASP.NET中实现无刷新分页的实例代码。通过本文,读者将了解到无刷新分页的实现原理、...

    ajax+json实例

    在.NET环境下,使用AJAX和JSON可以实现高效的前后端通信。.NET提供了System.Web.Script.Serialization命名空间下的JavaScriptSerializer类,用于将.NET对象序列化为JSON字符串,或者将JSON字符串反序列化为.NET对象...

    asp.net中利用Jquery+Ajax+Json实现无刷新分页的实例代码

    在ASP.NET中,我们可以创建一个ASP.NET Web Form页面(如`AjaxJson.aspx`),并在后台代码(如`AjaxJson.aspx.cs`)中处理数据获取和计算分页信息。同时,我们需要在页面中包含必要的JavaScript库,如jQuery和用于...

    thinkphp+ajax无刷新分页

    下面将深入探讨如何在ThinkPHP框架中使用AJAX实现无刷新分页。 #### 一、ThinkPHP框架简介 ThinkPHP是一个开源的PHP框架,遵循MVC(Model-View-Controller)架构模式,旨在提高开发效率和代码可维护性。它提供了...

    Servlet+jsp+AJax的分页及增删改查

    在本文中,我们将深入探讨如何使用Servlet、JSP和Ajax技术实现一个完整的增删改查(CRUD)功能以及分页。Servlet是Java Web应用程序的一部分,用于处理客户端请求和响应。JSP则是一种动态网页技术,它允许在服务器端...

    maven+ajax+json

    【标题】"maven+ajax+json" 描述了在软件开发中,使用Maven构建项目,通过Ajax技术处理JSON数据的方式。这是一个典型的前后端交互场景,涉及到的技术栈包括Maven(项目管理工具)、Ajax(异步JavaScript和XML)以及...

    bootstrap+ssm+ajax+返回json数据

    标题 "bootstrap+ssm+ajax+返回json数据" 涉及到的是一套常见的Web开发技术栈,包括Bootstrap、SSM(Spring、SpringMVC、MyBatis)框架以及Ajax和JSON数据交换。以下是对这些知识点的详细解释: 1. **Bootstrap**:...

    Struts2+Jquery+ajax+Json代码案例

    在“Struts2 Jquery ajax Json实现的一个完整案例”中,这些技术结合使用,以提高用户体验并优化服务器通信。 **Struts2** 是一个基于MVC(Model-View-Controller)设计模式的Java Web框架,它简化了开发过程,提供...

    asp+ajax+json医生预约系统

    【标题】:“asp+ajax+json医生预约系统”是一个基于Web技术实现的在线医疗服务预约平台。这个系统利用了ASP(Active Server Pages)作为后端服务器端脚本语言,结合AJAX(Asynchronous JavaScript and XML)技术和...

    Notepad++ 64位json插件

    在处理JSON(JavaScript Object Notation)数据时,有一个名为“JSONViewer”的插件能为Notepad++增添强大的JSON解析和格式化能力。JSONViewer插件是专为Notepad++设计的,特别是对于64位版本的用户,这个插件能够...

    web前端+jquery与ajax+json+手写前端完全实现分页

    本主题聚焦于"web前端+jQuery与Ajax+JSON+手写前端完全实现分页",这是一种高效的方法来处理大量数据,提升用户体验,同时减轻服务器压力。下面将详细介绍这些关键技术点。 **jQuery** 是一个快速、简洁的...

    jquery+ajax+json例子

    在Web开发中,jQuery、Ajax和JSON是三个非常重要的技术,它们共同构成了高效、动态的用户界面的基础。本文将深入探讨这些技术,并结合一个名为"TestJQuery"的示例来展示它们如何协同工作。 首先,jQuery是一个...

    Servlet+Jsp+Ajax分页增删改查

    使用Servlet+Jsp+JDBC实现增删改查,前台显示界面使用JavaScript、Ajax与后台交互进行登录验证,并对查询结果实现分页、局部刷新,以及复选框(全选、反选)操作,适合Web开发的初学者

    Struts+Jquery+Ajax+Json应用实例

    Struts、jQuery、Ajax以及JSON是Web开发中的四个关键技术,它们在构建动态、交互式的Web应用程序中发挥着重要作用。下面将分别介绍这些技术的核心概念及其在实际应用中的结合使用。 **Struts框架**:Struts是Apache...

    javascript+jquery+ajax相关学习资料PPT

    JavaScript、jQuery和AJAX是Web开发中的核心技术,广泛用于创建动态和交互式的网页。这些技术在现代网页设计中起着至关重要的作用,因为它们能够实现页面的无刷新更新,提高用户体验,减少服务器负担。 首先,...

    ssh2+ajax+jquery+json 登陆验证

    根据提供的文件信息,本文将详细解析“ssh2+ajax+jquery+json 登陆验证”的实现原理及技术要点。本文将围绕SSH2框架、Ajax、jQuery和JSON这些技术展开讨论,并结合给定的部分内容来深入分析如何利用这些技术进行...

    spring+mybatis框架,json,ajax学习demo代码

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛用于前端和后端之间的数据传输,而Ajax(Asynchronous JavaScript and XML)则是一种让网页进行异步更新的技术,可以实现页面局部刷新,提高...

    fastjson+ajax+sppringmvc前后使用json传值的demo

    本示例“fastjson+ajax+sppringmvc前后使用json传值的demo”展示了如何利用这些技术进行高效的数据传输。以下是相关知识点的详细说明: 1. JSON:JSON是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于...

    javascript+ajax实用技术

    JavaScript 和 AJAX 是 web 开发中...总结来说,JavaScript+AJAX的实用技术涵盖了网页的动态交互、异步数据交换和页面更新等多个方面,是现代Web开发不可或缺的技能。通过不断学习和实践,你将在这一领域变得更加专业。

Global site tag (gtag.js) - Google Analytics