2021_01_10_实习实训_day06_员工后台管理项目_删除功能

项目empManeger_2021

删除功能

前台实现

在empList.jsp中加入删除按钮,通过删除按钮的点击是事件删除数据库中的员工信息。其中所有员工信息前面都有一个复选框,复选框功能已在第五天实现,复选框的name为chk,复选框的value为当前员工的编号。

<input type="button" class="btn btn-primary" value="删除" onclick="delEmp()"/>

其中delEmp函数如下:

        //删除功能
        function delEmp(){
    
    
            //判断用户是否选择数据,如果没有选择,我们需要给出提示
            //获取所有的复选框
            var isChk = false;
            var arrChk = document.getElementsByName("chk");
            for(var i=0; i<arrChk.length; i++){
    
    
                if(arrChk[i].checked){
    
    
                    isChk = true;
                    break;
                }
            }
            if(!isChk){
    
    
                alert("请选择要删除的员工信息");
                //结束当前方法,结束删除的动作
                return;
            }
            //如果用户选择了数据,那么要进行二次确认
            if(confirm("确定要删除所选记录么?")){
    
    
                //用户点击了确定按钮,执行接下来的操作
                //获取选中员工的工号,并传递的后台进行删除
                //只有工号才能唯一确定某个员工

                //该变量用于存放所有被选中的员工工号
                var empnos = "";

                for(var i=0; i<arrChk.length; i++){
    
    
                    //判断:如果当前复选框被选中,那么就获取value值
                    //即可获得被选中的员工编号
                    if(arrChk[i].checked){
    
    
                        empnos = empnos + arrChk[i].value;
                        empnos += ",";
                    }
                }

                //empnos的值为:  1,2,3,
                //字符串的截取,去掉最后一个,
                empnos = empnos.substring(0,empnos.length-1);

                //请求后台,将empnos传递到后台,进行删除操作
                window.location.href = "DelEmpServlet?empnos=" + empnos;
            }
        }

后台实现

数据库接口方法 deleteByEmpno声明

    /**
     * 根据工号进行批量删除
     * @param empnos   数组,存放了要删除的员工工号
     * @return
     */
    int deleteByEmpno(int[] empnos) ;

数据库接口方法deleteByEmpno实现

    @Override
    public int deleteByEmpno(int[] empnos)  {
    
    
        Connection conn = DBUtil.getConn();
        int num = 0;
        PreparedStatement pst = null;

        String sql = "delete from employee where empno in (";
        //根据数组的长度,决定在sql中拼接几个?
        for(int i=0; i<empnos.length; i++){
    
    
            sql += "?";
            //除去最后一次,其他循环都需要加上,
            if(i != empnos.length -1){
    
    
                sql += ",";
            }
        }
        sql += ")";

        try {
    
    
            pst = conn.prepareStatement(sql);
            //设置占位符
            for(int i=0; i<empnos.length; i++){
    
    
                pst.setInt(i+1,empnos[i]);
            }
            num = pst.executeUpdate();

        } catch (SQLException e) {
    
    
            e.printStackTrace();
        } finally {
    
    
            DBUtil.closeAll(conn,pst,null);
        }
        return num;
    }

业务逻辑delByEmpno声明

    int delByEmpno(String empnos);

业务逻辑delByEmpno实现

    @Override
    public int delByEmpno(String empnos) {
    
    
        //dao层需要的参数是int数组
        //我们需要将字符串empnos转换为int数组
        //利用,将字符串隔开,转换为字符串数组
        String[] strEmpno = empnos.split(",");
        int[] intEmpnos = new int[strEmpno.length];
        //将字符串转换为int
        for(int i=0; i<strEmpno.length; i++){
    
    
            intEmpnos[i] = Integer.parseInt(strEmpno[i]);
        }

        int num = empDao.deleteByEmpno(intEmpnos);
        return num;
    }

DelEmpServlet

package com.wangbiao.emp.servlet;

import com.wangbiao.emp.service.IEmpService;
import com.wangbiao.emp.service.impl.EmpServiceImpl;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet("/DelEmpServlet")
public class DelEmpServlet extends HttpServlet {
    
    
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
    
        doGet(request, response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
    
        //获取前台请求参数,并调用service层
        String empnos = request.getParameter("empnos");//小括号中的值要和前台访问路径中?后的值完全相同

        IEmpService empService = new EmpServiceImpl();
        int num = empService.delByEmpno(empnos);

        if(num > 0){
    
    
            //删除成功
            request.setAttribute("msg","成功删除了" + num + "条数据");
        }else{
    
    
            request.setAttribute("msg","服务器错误");
        }
        request.getRequestDispatcher("GetAllEmpServlet").forward(request,response);
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_43567146/article/details/113002768
今日推荐