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);
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值