Ajax实现动态及时刷新表格数据
大家好,我是雄雄,今天分享的技術很簡單,即ajax結合jdbc動態實現及時刷新表單數據。
前言:相信大家在網上沖浪的時候,肯定會發現這樣的場景,在實現某個查詢功能時,下方表格中會顯示需要展示的結果,當查詢條件換掉之后,數據表格中顯示的信息也會及時更新,今天,我們就來實現一下這樣的功能。
效果圖如下所示:
數據庫:mysql
開發編輯器:myeclipse
瀏覽器:chrome
采用java三層架構分層開發,首先我們先來看看數據庫的表結構:
Emp表:
Dept表:
接下來就是按照表結構寫實體類,代碼如下:
Emp實體類:
package?org.entity;public?class?Emp?{private?int?eid;private?String ename;private?String epass;private?int?edid;private?Dept dept;public?Dept getDept()?{return?dept;}public?void?setDept(Dept dept)?{this.dept = dept;}public?int?getEid()?{return?eid;}public?void?setEid(int?eid)?{this.eid = eid;}public?String getEname()?{return?ename;}public?void?setEname(String ename)?{this.ename = ename;}public?String getEpass()?{return?epass;}public?void?setEpass(String epass)?{this.epass = epass;}public?int?getEdid()?{return?edid;}public?void?setEdid(int?edid)?{this.edid = edid;}public?Emp( String ename, String epass, int?edid)?{super();this.ename = ename;this.epass = epass;this.edid = edid;}public?Emp(){}}Dept實體類:
package?org.entity;public?class?Emp?{private?int?eid;private?String ename;private?String epass;private?int?edid;private?Dept dept;public?Dept getDept()?{return?dept;}public?void?setDept(Dept dept)?{this.dept = dept;}public?int?getEid()?{return?eid;}public?void?setEid(int?eid)?{this.eid = eid;}public?String getEname()?{return?ename;}public?void?setEname(String ename)?{this.ename = ename;}public?String getEpass()?{return?epass;}public?void?setEpass(String epass)?{this.epass = epass;}public?int?getEdid()?{return?edid;}public?void?setEdid(int?edid)?{this.edid = edid;}public?Emp( String ename, String epass, int?edid)?{super();this.ename = ename;this.epass = epass;this.edid = edid;}public?Emp(){}}連接數據庫所需的BaseDao:
package?org.entity;public?class?Emp?{private?int?eid;private?String ename;private?String epass;private?int?edid;private?Dept dept;public?Dept getDept()?{return?dept;}public?void?setDept(Dept dept)?{this.dept = dept;}public?int?getEid()?{return?eid;}public?void?setEid(int?eid)?{this.eid = eid;}public?String getEname()?{return?ename;}public?void?setEname(String ename)?{this.ename = ename;}public?String getEpass()?{return?epass;}public?void?setEpass(String epass)?{this.epass = epass;}public?int?getEdid()?{return?edid;}public?void?setEdid(int?edid)?{this.edid = edid;}public?Emp( String ename, String epass, int?edid)?{super();this.ename = ename;this.epass = epass;this.edid = edid;}public?Emp(){}}接著,就是Dao層接口,IEmpDao:
package?org.entity;public?class?Emp?{private?int?eid;private?String ename;private?String epass;private?int?edid;private?Dept dept;public?Dept getDept()?{return?dept;}public?void?setDept(Dept dept)?{this.dept = dept;}public?int?getEid()?{return?eid;}public?void?setEid(int?eid)?{this.eid = eid;}public?String getEname()?{return?ename;}public?void?setEname(String ename)?{this.ename = ename;}public?String getEpass()?{return?epass;}public?void?setEpass(String epass)?{this.epass = epass;}public?int?getEdid()?{return?edid;}public?void?setEdid(int?edid)?{this.edid = edid;}public?Emp( String ename, String epass, int?edid)?{super();this.ename = ename;this.epass = epass;this.edid = edid;}public?Emp(){}}接口實現類EmpDaoImpl:
package org.dao.impl;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 org.dao.BaseDao; import org.dao.IEmpDao; import org.entity.Dept; import org.entity.Emp;import com.sun.corba.se.spi.orbutil.fsm.Guard.Result;public?class?EmpDaoImpl?implements?IEmpDao?{private?Connection conn;private?PreparedStatement p;private?ResultSet rs;BaseDao base?= new?BaseDao();@Overridepublic?int?addEmp(Emp emp) {String sql = "insert into Emp(ename,epass,edid) values(?,?,?);";List<Object> prama = new?ArrayList<Object>();prama.add(emp.getEname());prama.add(emp.getEpass());prama.add(emp.getEdid());int?rel = 0;try?{rel = base.ExecuteUpdate(sql, prama);} catch?(SQLException e) {e.printStackTrace();}finally{base.closeConn(conn, p, rs);}return?rel;}//查詢全部@Overridepublic?List<Emp> findEmpAll() {String sql = "SELECT * FROM emp ,dept WHERE emp.edid = dept.did";List<Emp> eList = new?ArrayList<Emp>();try?{rs = base.ExecuteQuery(sql, null);while(rs.next()){Emp emp = new?Emp();emp.setEid(rs.getInt("eid"));emp.setEname(rs.getString("ename"));emp.setEpass(rs.getString("epass"));emp.setEdid(rs.getInt("edid"));Dept dept = new?Dept();dept.setDid(rs.getInt("did"));dept.setDname(rs.getString("dname"));emp.setDept(dept);eList.add(emp);}} catch?(SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally{base.closeConn(conn, p, rs);}return?eList;}@Overridepublic?int?delEmp(int?eid) {String sql = "delete from emp where eid = ?;";List<Object> prama = new?ArrayList<Object>();prama.add(eid);int?rel = 0;try?{rel = base.ExecuteUpdate(sql, prama);} catch?(SQLException e) {e.printStackTrace();}finally{base.closeConn(conn, p, rs);}return?rel;}@Overridepublic?Emp findEmpByName(String name) {String sql = "select * from Emp where ename =?";List<Object> pa= new?ArrayList<Object>();pa.add(name);Emp emp = new?Emp();try?{rs = base.ExecuteQuery(sql, pa);while(rs.next()){emp.setEid(rs.getInt("eid"));emp.setEname(rs.getString(2));emp.setEpass(rs.getString(3));emp.setEdid(rs.getInt("edid"));}} catch?(SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally{base.closeConn(conn, p, rs);}return?emp;}//根據部門編號查詢@Overridepublic?List<Emp> findEmpByDid(int?edid) {List<Emp> empList = new?ArrayList<Emp>();List<Object> param = new?ArrayList<Object>();String sql = null;if(edid!=0){sql = "SELECT * FROM emp ,dept WHERE emp.edid = dept.did and edid = ?";param.add(edid);}else{sql = "SELECT * FROM emp ,dept WHERE emp.edid = dept.did";}try?{rs = base.ExecuteQuery(sql, param);while(rs.next()){Emp emp = new?Emp();emp.setEid(rs.getInt("eid"));emp.setEname(rs.getString("ename"));emp.setEpass(rs.getString("epass"));emp.setEdid(rs.getInt("edid"));Dept dept = new?Dept();dept.setDid(rs.getInt("did"));dept.setDname(rs.getString("dname"));emp.setDept(dept);empList.add(emp);}} catch?(SQLException e) {e.printStackTrace();}finally{base.closeConn(conn, p, rs);}return?empList;}}Service層接口IEmpService:
package?org.service;import?org.dao.IEmpDao;public?interface?IEmpService?extends?IEmpDao?{}Service層實現類:EmpServiceImpl:
package?org.service.impl;import?java.util.List;import?org.dao.IEmpDao; import?org.dao.impl.EmpDaoImpl; import?org.entity.Emp; import?org.service.IEmpService;public?class?EmpServiceImpl?implements?IEmpService?{IEmpDao empDao = new?EmpDaoImpl();@Overridepublic?int?addEmp(Emp emp)?{return?empDao.addEmp(emp);}@Overridepublic?List<Emp> findEmpAll()?{// TODO Auto-generated method stubreturn?empDao.findEmpAll();}@Overridepublic?int?delEmp(int?eid)?{// TODO Auto-generated method stubreturn?empDao.delEmp(eid);}@Overridepublic?Emp findEmpByName(String name)?{// TODO Auto-generated method stubreturn?empDao.findEmpByName(name);}@Overridepublic?List<Emp> findEmpByDid(int?edid)?{return?empDao.findEmpByDid(edid);}}主要內容在前臺jsp頁面,我們先來寫一個下拉列表,用來存放Dept表中的所有部門名稱,當加載該jsp頁面時,先從數據庫中查詢所有部門名稱,然后通過jstl遍歷至下拉列表中。代碼如下:
<%IEmpService empService = new?EmpServiceImpl();List<Emp> empList = empService.findEmpAll();request.setAttribute("empList", empList);IDeptService deptService = new?DeptServiceImpl();List<Dept> deptList = deptService.findAllDept();request.setAttribute("deptList", deptList);%>部門編號:<!-- <input type="text" name="edid"/> --><select?id="deptid"><option?value="0">全部</option><c:forEach?items="${deptList }"?var="dept"><option?value="${dept.did }">${dept.dname }</option></c:forEach></select><input?type="button"?id="serch"?value="查詢"/>當點擊查詢按鈕時,通過ajax去Servlet中,根據部門編號查詢員工信息,在回調函數(success)中處理返回的json數據,遍歷動態添加至表格中。
“查詢”按鈕 的點擊事件:
//點擊查詢查詢值$("#serch").click(function(){//獲取部門編號//var edid = $("input[name='edid']").val();//獲取下拉列表中的值var?edid = $("#deptid").val();var?data = {"edid":edid,"tag":"getEmpByEdid"};$.getJSON("EmpServlet",data,function(data){$("#dataTable").html("<tr><td>編號</td><td>姓名</td><td>密碼</td><td>部門編號</td><td>操作</td></tr>");for(var?i in?data){//給表格中添加數據$("#dataTable").append("<tr><td>"+data[i].eid+"</td><td>"+data[i].ename+"</td><td>"+data[i].epass+"</td><td>"+data[i].dept.dname+"</td><td><a href='EmpServlet?tag=del&eid="+data[i].eid+"'>刪除</a></td></tr>");}});});數據表格的代碼:
<table?border="1"?id="dataTable"><tr><td>編號</td><td>姓名</td><td>密碼</td><td>部門名稱</td><td>操作</td></tr><c:forEach?items="${empList }"?var="emp"><tr><td>${emp.eid }</td><td>${emp.ename }</td><td>${emp.epass}</td><td>${emp.dept.dname}</td><td><a?href="EmpServlet?tag=del&eid=${emp.eid }">刪除</a></td></tr>??</c:forEach></table>Servlet類中關鍵代碼:
//根據部門編號查詢信息public?void?getEmpByEdid(HttpServletRequest request, HttpServletResponse response) throws IOException{Integer edid = Integer.parseInt(request.getParameter("edid"));List<Emp> emplist = empService.findEmpByDid(edid);String jsonresult = JSON.toJSONString(emplist);System.out.println(jsonresult);PrintWriter out?= response.getWriter();out.print(jsonresult);}基本思路就是這樣的,怎么樣,是不是很簡單?
需要辣椒醬的可以在小商店中直接下單哦~
往期精彩
相比學習好的學生,老師最喜歡努力認真學習的學生
2020-12-12
小課堂?小視頻?小商店?
2020-12-11
什么樣的事才是有意義的
2020-12-10
如何實現省市關聯的下拉列表
2020-12-09
點分享
點點贊
點在看
總結
以上是生活随笔為你收集整理的Ajax实现动态及时刷新表格数据的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 米哈游投资核聚变,能量奇点“洪荒 70”
- 下一篇: 上机不会做?在讲台上做做试试!