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

2023-11-19

目录

一.实现删除功能

1.1 url如何传参?

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

1.2 servlet如何拿对应值?

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

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

1.3 如何询问?

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

1.4 代码分析

1.4.1 前端传参

删除 >

1.4.2 后台业务处理

二.实现增加功能

2.1 效果预览

 2.2 代码实现

2.2.1 前端实现

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

三.实现修改功能

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)

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

商品编号:

商品名称:

 

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

 

     

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

 //重定向跳转去加载并展示数据            resp.sendRedirect("goods.do");        }        else {            out.print("");        }


一.实现删除功能

1.1 url如何传参?

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

1.2 servlet如何拿对应值?

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

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

1.3 如何询问?

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

1.4 代码分析

1.4.1 前端传参

<a href="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>");
        }

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JavaWeb05(删除&增加&修改功能实现&连接数据库) 的相关文章

随机推荐

  • python的内置容器(list、set、tuple、dict)概念、使用及遍历方法

    容器概念 线性表 有序的容器结构 数组 array 是由连续的内存空间组成 栈 stack 先进后出 后进先出 队列 queue 先进先出 后进后出 链表 list 是由不连续的内存空间组了逻辑结构 单向链表 内存小 效率低 双向列表 内存
  • kubeadm 安装k8s

    关于k8s集群化部署 以下均是个人一步一步的完成部署 并且会罗列出在部署过程中遇到的各种问题及其解决方式 一 环境准备 环境准备阶段试用与master节点部署与work节点部署 即master和work节点全部都需要执行这些步骤 1 关闭防
  • LCR 005. 最大单词长度乘积----位掩码的使用

    题目描述 给定一个字符串数组 words 请计算当两个字符串 words i 和 words j 不包含相同字符时 它们长度的乘积的最大值 假设字符串中只包含英语的小写字母 如果没有不包含相同字符的一对字符串 返回 0 示例 1 输入 wo
  • javascript——js string 转 int 注意的问题——parseInt

  • Linux搭建C++开发调试环境的方法步骤

    安装g Linux编译C 程序必须安装g 编译器 这里使用yum方式安装 首先切换到root账号 su root 然后输入密码 执行yum install gcc c 注意不是yum install g 报错 报错是因为yum需要配置正确的
  • 安装启动配置mysql5.7_MySQL5.7多实例安装及开机启动配置(亲测)

    安装环境 CentOS版本 CentOS7 6 1810 MySQL版本 5 7 9 以前一些很low的方法是 解压两个mysql 分别放到不同文件夹 其实在mysql中已经考虑到了多实例安装的情况 也有相应的脚本命令的支持 现在安装两个m
  • 发牌程序 java

    题目要求 代码 package PokerGame import java util public class PokerGame 黑桃 红心 草花 方块 int m 牌数 int n 人数 int warning 0 有余数 int po
  • unity各种路径

    1 Resources路径 Resources文件夹是Unity里自动识别的一种文件夹 可在Unity编辑器的Project窗口里创建 并将资源放置在里面 Resources文件夹下的资源不管是否有用 全部会打包进 apk或者 ipa 并且
  • 什么是依赖注入

    什么是依赖注入 依赖注入指的是在Spring创建对象的过程中 把对象依赖的属性注入到对象中 依赖注入的方式主要包括 基于 set 方式注入 也即属性注入 基于构造器方式的注入 p命名空间注入 对应属性注入 c命名空间注入 对应构造器注入 p
  • [Java实现 Scoket实时接收Tcp消息 优化层层叠加]

    目录 前言 基础实现代码 描述 优化代码多线程处理客户端连接和消息接收 描述 再次优化异步实现 以下是使用 CompletableFuture 实现异步处理客户端请求的示例代码 描述 进一步优化的代码 Netty来实现Socket服务器 描
  • AntV 柱状图

    AntV 柱状图图表 Step 1 npm install antv g2 Step 2 创建柱状图容器 div div 代码截图 代码生成效果 源码 const chartData 0 date Jan num 4 1 date Feb
  • 一篇文章实习心得

    1 爬虫实习 2月 如果公司已经搭建好了爬虫框架比如scrapy那么爬的方向可能也是固定的 代码复用率应该很高 只需要分析页面的逻辑 以及想要爬的字段 自己按照前辈写的代码修改就好了 如果公司没有搭建好框架 你是公司的第一个爬虫工程师 你要
  • mysql的主键规则_MySQL主键(PRIMARY KEY)

    主键 PRIMARY KEY 的完整称呼是 主键约束 MySQL 主键约束是一个列或者列的组合 其值能唯一地标识表中的每一行 这样的一列或多列称为表的主键 通过它可以强制表的实体完整性 选取设置主键约束的字段 主键约束即在表中定义一个主键来
  • Python如何执行shell脚本

    Python如何执行shell脚本 自从出了Pyhon3 5之后 os模块下的system os popen 基本被废弃了 因此如下只介绍2种方式 一 使用commands模块 有三个方法可以使用 1 commands getstatuso
  • wireshark 实用过滤表达式

    wireshark 实用过滤表达式 针对ip 协议 端口 长度和内容 1 关键字 与 eq 和 等同 可以使用 and 表示并且 或 or 表示或者 非 和 not 都表示取反 多组条件联合过滤数据包的命令 就是通过每个单个的条件命令与关键
  • python教程29-继承的基本使用、继承的注意事项、类方法和静态方法回顾、私有属性的继承特点、新式类和经典类

    python教程 小白入门2021 4 5 学习目标 文章目录 python教程 小白入门2021 4 5 P 168 继承的基本使用 P169 继承的注意事项 P170 类方法和静态方法回顾 P171 私有属性的继承特点 P172 新式类
  • 干货:Java正确获取客户端真实IP方法整理

    在JSP里 获取客户端的IP地址的方法是 request getRemoteAddr 这种方法在大部分情况下都是有效的 但是在通过了Apache Squid等反向代理软件就不能获取到客户端的真实IP地址了 如果使用了反向代理软件 将http
  • Leetcode.406 经典算法题:根据身高重建队列

    假设有打乱顺序的一群人站成一个队列 数组 people 表示队列中一些人的属性 不一定按顺序 每个 people i hi ki 表示第 i 个人的身高为 hi 前面 正好 有 ki 个身高大于或等于 hi 的人 请你重新构造并返回输入数组
  • 使用Idea更新数据库表的数据

    tags IDEA 我们在做案例的时候 经常需要改变数据表中的数据来进行简单测试 那我们在Idea下是如何修改数据表的数据的呢 我们可以看下面的图片 只要选择updata就行了 后面再按自动提交的标志 如果您觉得这篇文章帮助到了您 可以给作
  • JavaWeb05(删除&增加&修改功能实现&连接数据库)

    目录 一 实现删除功能 1 1 url如何传参 xx do 参数 参数值 参数名 参数值 1 2 servlet如何拿对应值 根据参数名拿到对应的参数值 String str req getParameter 参数名 1 3 如何询问 nc