JavaWeb05(删除&增加&修改功能实现&连接数据库)

简介: JavaWeb05(删除&增加&修改功能实现&连接数据库)

一.实现删除功能

1.1 url如何传参?

xx.do?参数=参数值&参数名=参数值

1.2 servlet如何拿对应值?

//根据参数名拿到对应的参数值

String str = req.getParameter("参数名")

1.3 如何询问?

onclick="return confirm('确定要删除嘛?')"

1.4 代码分析

1.4.1 前端传参

<ahref="delete.do?gid=${g.gid }" >删除 ></a>

1.4.2 后台业务处理

  //实例化dao对象
    GoodsDao gd = new GoodsDao();
    //接收删除的id
    String gid=req.getParameter("gid");
    //调用dao方法 连接数据库进行判断
    /**
   * 删除商品
   * @param gid 商品编号
   * @return 影响行数
   */
  public int delete(String gid) {
    int n = 0;
    try {
      con=DBHelper.getCon();
      String sql="delete from tb_goods where gid="+gid;
      ps=con.prepareStatement(sql);
      n=ps.executeUpdate();
    } catch (Exception e) {
      e.printStackTrace();
    }finally {
      DBHelper.myClose(con, ps, rs);
    }
    return n;
  }
    //运用
    //调用删除的dao方法
    int n = gd.delete(gid);
    if(n>0) {//删除成功
      resp.sendRedirect("goods.do");
    }
    else {
      out.print("<script>alert('删除失败');location.href='goods.do';</script>");
    }

二.实现增加功能

2.1 效果预览

2.2 代码实现

2.2.1 前端实现

  //实例化dao对象
    GoodsDao gd = new GoodsDao();
    //设置编码方式
    req.setCharacterEncoding("utf-8");
    resp.setContentType("text/html; charset=UTF-8");
    //获取session和out
    HttpSession session = req.getSession();
    PrintWriter out = resp.getWriter();
    //接收表单提交过来的数据(增加)
    String gname=req.getParameter("gname");
    String s=req.getParameter("gprice");
    double gprice=Double.parseDouble(s);
    String ginfo=req.getParameter("ginfo");
    //实例化一个对象
    Goods g = new Goods(gname, gprice, ginfo);
    //调用增加的dao方法
    int n = gd.addGoods(g);
    if(n>0) {//增加成功
      resp.sendRedirect("goods.do");
    }
    else {
      out.print("<script>alert('增加失败');location.href='add.jsp';</script>");
    }
    //dao方法
        /**
   * 增加商品
   * @param g 商品对象
   * @return 返回影响行数
   */
  public int addGoods(Goods g) {
    int n = 0;
    int gid = getID("gid", "tb_goods");
    g.setGid(gid);
    try {
      con=DBHelper.getCon();
      String sql="insert into tb_goods(gid,gname,gprice,ginfo) values(?,?,?,?)";
      ps=con.prepareStatement(sql);
      //给占位符赋值4个
      ps.setInt(1, g.getGid());
      ps.setString(2, g.getGname());
      ps.setDouble(3, g.getGprice());
      ps.setString(4, g.getGinfo());
      n=ps.executeUpdate();
    } catch (Exception e) {
      e.printStackTrace();
    }finally {
      DBHelper.myClose(con, ps, rs);
    }
    return n;
  }

2.2.2 标识列实现

①触发器+序列

--序列
create sequence seq_goods;
--触发器:前触发
create or replace trigger t_goods
before insert
on tb_goods
for each row 
begin
        :new.gid:=seq_goods.nextval;---插入之前给商品编号列赋值
end;

②取表的最大序号+1

/**
     * 获取id
     * @param colName     列名
     * @param tabName 表名
     * @return
     */
    public int getID(String colName,String tabName) {//uuid tb_user
        int n = 0;
        try {
            con=DBHelper.getCon();
            String sql="select nvl(max("+colName+"),0)+1 from "+tabName;
            ps=con.prepareStatement(sql);
            rs=ps.executeQuery();
            if(rs.next()) {
                n=rs.getInt(1);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            DBHelper.myClose(con, ps, rs);
        }
        return n;
    }

三.实现修改功能

3.1 总思路

3.2 效果预览

3.3 核心代码分析

3.3.1 修改前业务处理(servlet:preupdate.do)

//实例化dao对象
  GoodsDao gd = new GoodsDao();
//接收修改的id
 String gid=req.getParameter("gid");
//调用单个查询的方法(根据gid拿到商品对象=单个查询)
  Goods goods = gd.getGoods(gid);
//存起来
   req.setAttribute("goods", goods);
 //转发到修改界面进行绑值
   req.getRequestDispatcher("update.jsp").forward(req, resp);

   

3.3.2 前端页面处理(update.jsp)

①页面显示编号  但不可编辑

商品编号:<input name="gid"  value="${goods.gid }" readonly="readonly"/><br/><br/>
商品名称:<input name="gname"  value="${goods.gname }"/><br/><br/>

②页面不显示编号  隐藏域传值

<!-- 隐藏域传值:会随着表单的提交而提交 根据name值拿value值  必须写在表单 -->
      <input type="hidden" name="gid" value="${goods.gid}"/>

3.3.3 修改后业务处理(servlet:update.do)

//实例化dao对象
        GoodsDao gd = new GoodsDao();
        //设置编码方式
        req.setCharacterEncoding("utf-8");
        resp.setContentType("text/html; charset=UTF-8");
        //获取session和out
        HttpSession session = req.getSession();
        PrintWriter out = resp.getWriter();
        //接收表单提交过来的数据(增加)
        String gid=req.getParameter("gid");
        String gname=req.getParameter("gname");
        String s=req.getParameter("gprice");
        double gprice=Double.parseDouble(s);
        String ginfo=req.getParameter("ginfo");
        //实例化一个对象
        Goods g = new Goods(gname, gprice, ginfo);
        //调用修改的dao方法  连接数据库进行判断
        int n = gd.updateGoods(g, gid);
        if(n>0) {//修改成功
        //重定向跳转去加载并展示数据
            resp.sendRedirect("goods.do");
        }
        else {
            out.print("<script>alert('修改失败');location.href='preupdate.do?gid="+gid+"';</script>");
        }


相关文章
|
9天前
|
关系型数据库 MySQL 数据库连接
Unity连接Mysql数据库 增 删 改 查
在 Unity 中连接 MySQL 数据库,需使用 MySQL Connector/NET 作为数据库连接驱动,通过提供服务器地址、端口、用户名和密码等信息建立 TCP/IP 连接。代码示例展示了如何创建连接对象并执行增删改查操作,确保数据交互的实现。测试代码中,通过 `MySqlConnection` 类连接数据库,并使用 `MySqlCommand` 执行 SQL 语句,实现数据的查询、插入、删除和更新功能。
|
1月前
|
Cloud Native 关系型数据库 分布式数据库
让PolarDB更了解您--PolarDB云原生数据库核心功能体验馆
让PolarDB更了解您——PolarDB云原生数据库核心功能体验馆,由阿里云数据库产品事业部负责人宋震分享。内容涵盖PolarDB技术布局、开源进展及体验馆三大部分。技术布局包括云计算加速数据库演进、数据处理需求带来的变革、软硬协同优化等;开源部分介绍了兼容MySQL和PostgreSQL的两款产品;体验馆则通过实际操作让用户直观感受Serverless、无感切换、SQL2Map等功能。
107 7
|
24天前
|
关系型数据库 MySQL 数据库连接
数据库连接工具连接mysql提示:“Host ‘172.23.0.1‘ is not allowed to connect to this MySQL server“
docker-compose部署mysql8服务后,连接时提示不允许连接问题解决
|
2天前
|
关系型数据库 MySQL 网络安全
如何排查和解决PHP连接数据库MYSQL失败写锁的问题
通过本文的介绍,您可以系统地了解如何排查和解决PHP连接MySQL数据库失败及写锁问题。通过检查配置、确保服务启动、调整防火墙设置和用户权限,以及识别和解决长时间运行的事务和死锁问题,可以有效地保障应用的稳定运行。
40 25
|
29天前
|
前端开发 Java 数据库连接
Java后端开发-使用springboot进行Mybatis连接数据库步骤
本文介绍了使用Java和IDEA进行数据库操作的详细步骤,涵盖从数据库准备到测试类编写及运行的全过程。主要内容包括: 1. **数据库准备**:创建数据库和表。 2. **查询数据库**:验证数据库是否可用。 3. **IDEA代码配置**:构建实体类并配置数据库连接。 4. **测试类编写**:编写并运行测试类以确保一切正常。
52 2
|
1月前
|
存储 Java 数据库连接
时序数据库TDengine 3.3.5.0 发布:高并发支持与增量备份功能引领新升级
TDengine 3.3.5.0 版本正式发布,带来多项更新与优化。新特性包括提升 MQTT 稳定性和高并发性能、新增 taosX 增量备份与恢复、支持 JDBC 和 Rust 连接器 STMT2 接口、灵活配置 Grafana Dashboard 等。性能优化涵盖查询内存管控、多级存储迁移、强密码策略等,全面提升时序数据管理的效率和可靠性。欢迎下载体验并提出宝贵意见。
40 5
|
3月前
|
数据库 C# 开发者
ADO.NET连接到南大通用GBase 8s数据库
ADO.NET连接到南大通用GBase 8s数据库
|
3月前
|
数据库连接 Linux Shell
Linux下ODBC与 南大通用GBase 8s数据库的无缝连接配置指南
本文详细介绍在Linux系统下配置GBase 8s数据库ODBC的过程,涵盖环境变量设置、ODBC配置文件编辑及连接测试等步骤。首先配置数据库环境变量如GBASEDBTDIR、PATH等,接着修改odbcinst.ini和odbc.ini文件,指定驱动路径、数据库名称等信息,最后通过catalog.c工具或isql命令验证ODBC连接是否成功。
|
3月前
|
JSON JavaScript 关系型数据库
node.js连接GBase 8a 数据库 并进行查询代码示例
node.js连接GBase 8a 数据库 并进行查询代码示例
|
3月前
|
数据库连接 数据库 C#
Windows下C# 通过ADO.NET方式连接南大通用GBase 8s数据库(上)
Windows下C# 通过ADO.NET方式连接南大通用GBase 8s数据库(上)

热门文章

最新文章