【JAVA项目实战】【图书管理系统】用户添加功能【Servlet】+【Jsp(1)

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

在这里插入图片描述

文章目录

前言

这里是【JAVASE】项目实战的第二节课,接着前天的用户信息查询功能继续做,今天做的是用户的添加功能,使用【servlet】【Jsp】【Mysql】来实现该功能。


一、需求分析

在前面用户信息的查询功能实现后,在用户信息页面有【增删改】的按钮。
在这里插入图片描述
实现用户信息的增加、修改、删除的操作。下面对增加的功能进行需求分析。
在这里插入图片描述
当点击添加按钮,就是用户发送了请求,这里由于在UserServlet中都是POST请求,所以后面在点击按钮触发事件时,应将actionmethod设置为post方式。用户发送请求后controller层的Servlet就应该要处理请求,而根据MVC架构,controller需要调用service层的方法,所以将业务逻辑交给Service层进行处理,service的处理有需要对请求处理的数据与dao层的数据进行比对,dao层访问数据库信息,对请求数据操作进行校验,并对操作返回数据响应。

二、功能实现

dao层和service层中创建接口以及工具constant类。constant类为了处理项目中需要的常量,防止所使用的量被修改后使用,方便统一管理常量信息。

1.控制层

   protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
       String type=req.getParameter(Constant.SERVLET_TYPE_SQLTYPE);
       if (type!=null && !"".equals(type)){
           //对请求进行判断,针对不同的请求进行不同的处理
           if(Constant.SERVLET_TYPE_SAVE.equals(type)){
            //进行添加操作
               saveUser(req, resp);
           }else if (Constant.SERVLET_TYPE_UPDATE.equals(type)){
            //进行更新操作
           }else if (Constant.SERVLET_TYPE_DELETE.equals(type)){
            //进行删除操作
           }else if(Constant.SERVLET_TYPE_QUERY.equals(type)){
               //进行查询操作
               queryUser(req, resp);
           }
       }else{
           /\*\*
 \* 上面对非空进行判断,如果为空,也要进行数据库信息比对,
 \* 所以也是进行查询操作
 \*/
           queryUser(req,resp);
       }

    }

为了避免代码重复,将处理的方法抽象出来,便于调用函数,使代码更加简洁。下面是提交表单和查询用户信息的方法。

private void saveUser(HttpServletRequest req, HttpServletResponse resp) throws IOException {
        //获取表单提交信息
        User user=new User();
        user.setUserName(req.getParameter("userName"));
        user.setPassword(req.getParameter("password"));
        user.setPhoneNum(req.getParameter("phoneNum"));
        user.setEmail(req.getParameter("email"));
        //记录影响行数
        Integer count= userService.addUser(user);
        //是否成功,进行事务的处理
        if (count>0){
            //重定向查询
            resp.sendRedirect("/userServlet");
        }else{
            //失败就跳转失败页面
            System.out.println("插入失败……");
        }
    }
    //查询用户信息
    private void queryUser(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //通过service进行信息查询
        List<User> list=userService.getUser(null);
        //进行绑定
        req.setAttribute("list",list);
        //跳转请求
        req.getRequestDispatcher("/user/user.jsp").forward(req, resp);
    }

2.业务层

在接口中调用添加用户的方法,注意返回值为Integer,表示影响的数据库的数据条数。

package com.song.bookmanagersystem.service;
import com.song.bookmanagersystem.entity.User;
import java.util.List;
public interface UserService {
    List<User> getUser(User user);
    //业务层添加用户
    Integer addUser(User user);
}

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

package com.song.bookmanagersystem.service;
import com.song.bookmanagersystem.entity.User;
import java.util.List;
public interface UserService {
    List<User> getUser(User user);
    //业务层添加用户
    Integer addUser(User user);
}

3.持久层

在dao层要完成信息的查库操作,与数据库的信息进行比对,并返回响应的结果,这是添加的操作,所以返回响应的结果是是否插入成功,以添加成功的条数来作为结果返回。

  @Override
    public Integer save(User user) {
        QueryRunner queryRunner = DBUtils.getQueryRunner();
      //创建sql语句
        String sql="insert into t\_user(user\_name, password, phone\_num, email, is\_deleted, salt) VALUES (?,?,?,?,?,?)";
        try {
           return queryRunner.update(sql,user.getUserName()
           ,user.getPassword(),user.getPhoneNum(),user.getEmail()
           ,user.getIsDeleted(),user.getSalt()


# 最后

分享一些资料给大家,我觉得这些都是很有用的东西,大家也可以跟着来学习,查漏补缺。

**《Java高级面试》**

![](https://img-blog.csdnimg.cn/img_convert/a549058f7a37c24ba62d92476675bab9.webp?x-oss-process=image/format,png)

**《Java高级架构知识》**

![](https://img-blog.csdnimg.cn/img_convert/cc0083c7bd2431abfd61f5ce3c46edb1.webp?x-oss-process=image/format,png)

**《算法知识》**

![](https://img-blog.csdnimg.cn/img_convert/c02c13094b04cc42c0f87b946b513585.webp?x-oss-process=image/format,png)

以跟着来学习,查漏补缺。

**《Java高级面试》**

[外链图片转存中...(img-KXHJJSLQ-1714512749515)]

**《Java高级架构知识》**

[外链图片转存中...(img-zM4FlUSq-1714512749515)]

**《算法知识》**

[外链图片转存中...(img-S4beXipQ-1714512749516)]

> **本文已被[CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】](https://bbs.csdn.net/topics/618154847)收录**
  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值