zoukankan      html  css  js  c++  java
  • 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();
      
      @Override
      public 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;
      }
    
      //查询全部
      @Override
      public 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 block
          e.printStackTrace();
        }finally{
          base.closeConn(conn, p, rs);
        }
        return eList;
      }
    
      @Override
      public 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;
      }
    
      
      @Override
      public 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 block
          e.printStackTrace();
        }finally{
          base.closeConn(conn, p, rs);
        }
        return emp;
      }
    
      //根据部门编号查询
      @Override
      public 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();
      
      @Override
      public int addEmp(Emp emp) {
        return empDao.addEmp(emp);
      }
    
      @Override
      public List<Emp> findEmpAll() {
        // TODO Auto-generated method stub
        return empDao.findEmpAll();
      }
    
      @Override
      public int delEmp(int eid) {
        // TODO Auto-generated method stub
        return empDao.delEmp(eid);
      }
    
      @Override
      public Emp findEmpByName(String name) {
        // TODO Auto-generated method stub
        return empDao.findEmpByName(name);
      }
    
      @Override
      public 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

    点分享

    点点赞

    点在看

  • 相关阅读:
    sockaddr与sockaddr_in,sockaddr_un结构体详细讲解
    busybox程序连接 ln怎么回事?怎样实现的
    有线网卡与无线网卡同时使用
    "$(@:_config=)"
    C#中Global文件
    Win7 IIS7 HTTP 错误 404.2 Not Found解决方法
    C#中的日期处理函数
    js字母大小写转换
    asp.net发布到IIS中出现错误:处理程序“PageHandlerFactoryIntegrated”在其模块列表中有一个错误模块“ManagedPipelineHandler”
    sql server在存储过程中使用游标和事务
  • 原文地址:https://www.cnblogs.com/a1111/p/14877345.html
Copyright © 2011-2022 走看看