【JAVA项目实战】【图书管理系统】用户删除功能【Servlet】+【JQuery】+【Mysql】

🚀个人主页:欢迎访问Ali.s的首页

⏰ 最近更新:2022年7月31日

⛽ Java框架学习系列:【Spring】【SpringMVC】【Mybatis】

🔥 Java项目实战系列:【飞机大战】【图书管理系统】

⛳ Java基础学习系列:【继承】【封装】【多态】

🏆 通信仿真学习系列:【硬件】【通信】【MATLAB】

🍄 个人简介:通信工程本硕🌈、Java程序员🚴。目前只会CURD😂

💌 点赞 👍 收藏 💗留言 💬 都是我最大的动力💯

在这里插入图片描述


前言

这里是【JAVASE】项目实战的第三节课,接着前面的用户新增功能继续做,今天做的是用户的删除功能,使用【servlet】【JQuery】【Mysql】来实现该功能。


一、需求分析

在前面用用户新增功能实现后,可以清楚的看到插入的用户信息,并且能够在前端页面渲染出数据效果,但是在实际的测试过程中出现了中文乱码问题,今天将完善一下中文乱码问题,并且完成用户删除功能。
在这里插入图片描述
下面对增加的功能进行需求分析。
在这里插入图片描述
当点击每条数据的删除按钮时,就是用户发送了请求,这里由于在UserServlet中都是POST请求,所以后面在点击按钮触发事件时,应将actionmethod设置为post方式。用户发送请求后controller层的Servlet就应该要处理请求,而根据MVC架构,controller需要调用service层的方法,所以将业务逻辑交给Service层进行处理,service的处理有需要对请求处理的数据与dao层的数据进行比对,dao层访问数据库信息,对请求数据操作进行校验,并对操作返回数据响应。

二、功能实现

dao层和service层中创建接口。这里与新增用户的功能类似,所以前面的功能实现后,这里就相对比较简单。

1.反射机制

这里使用反射机制来统一拿到User对象的表单信息,避免每次的增删改查都需要去获取User对象。

private <T>  T getRequestParameterForReflect(HttpServletRequest req,Class <T> cla) throws InstantiationException, IllegalAccessException {
        T t=cla.newInstance();
        //使用反射机制获取表单信息
        Map<String, String[]> parameterMap = req.getParameterMap();
        Field[] fields = cla.getDeclaredFields();
        //对信息判空处理
        if(fields!=null && fields.length>0) {
            for (Field field : fields) {
                String[] values = parameterMap.get(field.getName());
                if (values==null || values.length==0){
                    continue;
                }
                //判断是否是数组类型
                if (field.getType() ==String[].class){
                    //开启访问权限
                    field.setAccessible(true);
                    try {
                        field.set(t,values);
                    } catch (IllegalAccessException e) {
                        e.printStackTrace();
                    }
                    //关闭访问权限
                    field.setAccessible(false);
                    continue;
                }
                //不是数组类型
                field.setAccessible(true);
                try {
                    field.set(t,values[0]);
                } catch (IllegalAccessException e) {
                    e.printStackTrace();
                }
                //关闭访问权限
                field.setAccessible(false);
                continue;
            }
        }
        return t;
    }

2.控制层

为了避免代码重复,将处理的方法抽象出来,便于调用函数,使代码更加简洁。下面删除用户的方法。

 private void deleteUser(HttpServletRequest req, HttpServletResponse resp) throws IOException {
        //获取需要删除的用户的编号
        String id = req.getParameter("id");
        //通过service来进行操作
        Integer count = userService.deleteUser(Integer.parseInt(id));
        //对判断条数
        if (count>0){
            //进行重定向跳转
            resp.sendRedirect("/userServlet");
        }else{
            //删除失败
            System.out.println("删除失败……");
        }

    }

3.业务层

在接口中调用添加用户的方法,注意返回值为Integer,表示影响返回参数id的用户信息收到影响。

    @Override
    public Integer deleteUser(Integer id) {
        return userDao.delete(id);
    }

在实现类实现所调用的接口就能完成业务层的处理。

package com.song.bookmanagersystem.service;
import com.song.bookmanagersystem.entity.User;
import java.util.List;
public interface UserService {
    //业务层删除用户
    Integer deleteUser(Integer id);
}

4.持久层

dao层要完成信息的查库操作,与数据库的信息进行比对,并返回响应的结果,这是删除的操作,所以返回响应的结果是否删除成功,并且要将数据作为返回值进行传递。

    @Override
    public Integer delete(Integer id) {
        QueryRunner queryRunner = DBUtils.getQueryRunner();
        String sql="delete from t_user where id= ?";
        try {
            return queryRunner.update(sql,id);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return -1;
    }

5.乱码问题

在新增用户信息时,当输入的字段信息为中文时,在前端页面和数据库中都有可能出现乱码问题。
在这里插入图片描述
针对乱码问题,我们选择在用户发送请求时,将用户输入的信息做字符集编码格式的处理,这样后面的每一步都将可以正常的操作和显示,从源头上解决乱码问题,所以在POST请求时,就设置字符编码格式 req.setCharacterEncoding("UTF-8")

 protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
      //设置post请求中解码的方式
        req.setCharacterEncoding("UTF-8");
       String type=req.getParameter(Constant.SERVLET_TYPE_SQLTYPE);
       if (type!=null && !"".equals(type)){
           //对请求进行判断,针对不同的请求进行不同的处理
           if(Constant.SERVLET_TYPE_SAVE.equals(type)){
            //进行添加操作
               try {
                   saveUser(req, resp);
               } catch (Exception e) {
                   e.printStackTrace();
               }
           }else if (Constant.SERVLET_TYPE_UPDATE.equals(type)){
            //进行更新操作
           }else if (Constant.SERVLET_TYPE_DELETE.equals(type)){
            //进行删除操作
               deleteUser(req,resp);
           }else if(Constant.SERVLET_TYPE_QUERY.equals(type)){
               //进行查询操作
               queryUser(req, resp);
           }
       }else{
           queryUser(req,resp);
       }
    }

三、功能测试

启动服务器,让项目在服务器中运行,实现在新增的功能下测试中文的输入是否还存在乱码问题,然后在网页上进行删除用户数据的测试。
在这里插入图片描述
页面已经可以正常显示中文字段信息,说明中文乱码问题已经解决,下面测试删除信息的功能。
在这里插入图片描述
点击删除按钮后,页面再次跳转回用户信息页面,并且刚刚删除的数据信息已经不存在,在数据库中也不存在该用户信息,说明用户删功能已经完成。
在这里插入图片描述
在这里插入图片描述


在这里插入图片描述

总结

以上就是今天要讲的内容,使用【Servlet】+【JQuery】+【Mysql】对用户删除功能进行实现,发现能成功删除数据库中的用户信息,并且能够数据返回到前端页面进行渲染,重新返回到用户信息页面,同时解决了中文乱码问题,设置字符编码格式是防止乱码的有效方法。

  • 24
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 46
    评论
图书馆管理系统是一个基于Java、JSP、ServletMySQL的软件系统,旨在实现对图书馆业务的自动化管理和信息化处理。该系统主要包括以下功能: 1. 图书信息管理:包括图书的录入、修改、删除和查询等操作。管理员可以通过该功能对馆藏图书进行管理和维护,包括图书的基本信息、借阅状态、归还日期等。 2. 读者信息管理:实现读者信息的录入、修改、删除和查询等操作。读者可以通过该功能查询自己的图书借阅情况、预约图书、办理借阅证等。 3. 图书借阅管理:包括读者借书、还书和续借等操作。读者可以通过该功能查询图书的借阅情况、归还日期,并进行相关操作。 4. 图书预约管理:读者可以通过该功能查询图书的可借阅情况,并预约待借图书。系统会自动为读者预留图书,并在指定时间内进行借阅。 5. 图书归还管理:读者归还图书后,管理员通过该功能进行图书归还登记,更新图书的借阅状态和借阅记录。 6. 图书查询统计:系统提供了各种查询和统计功能,包括图书的分类查询、读者借阅情况统计、图书流通统计等,用于方便管理员进行数据分析和决策。 7. 系统权限管理:系统设置了管理员和读者两个角色,分别对应不同的功能和权限。管理员可以对系统进行设置和管理,读者只能进行查询和借阅等操作。 该系统基于MySQL数据库存储图书和读者信息,通过Java的JSP和Servlet技术实现系统的前后端交互和逻辑处理。借助这些技术,系统可以实现快速、安全、可靠的图书馆管理服务,提高图书馆工作效率和读者体验。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ali.s

你的鼓励将是我前进的最好动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值