前后端功能实现——添加品牌

news2024/9/23 17:11:31

需求

点击新增,跳转到添加品牌的页面,从后一个页面提交品牌数据:

1、BrandMapper接口添加add()方法

/**
* 添加品牌
*/
void add(Brand brand);

2、BrandMapper.xml中添加sql方法

<insert id="add">
   insert into brand values (null,#{brandName},#{brandIntro},#{ordered},#{status});
</insert>

3、BrandService类中添加add()方法

/**
* 添加品牌
*/
public void add(Brand brand){
   //获取SqlSession
   SqlSession sqlSession=factory.openSession();
   //获取BrandMapper
   BrandMapper mapper=sqlSession.getMapper(BrandMapper.class);
   mapper.add(brand);

   //提交事务
   sqlSession.commit();
   //释放资源
   sqlSession.close();
}

4、新建addServlet

web文件夹中创建

思路分析:

  1. 获取请求参数
  2. 将获取到的请求参数(JSON格式的数据)转换为 Brand 对象
  3. 调用service的add()方法进行添加数据的逻辑处理
  4. 将JSON数据响应回给浏览器。

前端提交的数据格式是JSON:后端要用 request 对象获取输入流,再通过输入流读取数据。不能使用 request.getParameter() 方法获取请求参数(如果提交的数据格式是 username=Sheldon&age=23 ,后端可以使用 request.getParameter() 方法获取)

@WebServlet("/add")
public class addServlet extends HttpServlet {
    private BrandService brandService=new BrandService();
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //接收数据 获取请求体数据
        BufferedReader br=request.getReader();
        String params=br.readLine();
        //将JSON字符串转为Java对象
        Brand brand= JSON.parseObject(params, Brand.class);
        //调用service添加
        brandService.add(brand);
        //响应成功
        response.getWriter().write("success");
    }

}

5、新建addBrand.html

webapp中创建

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>添加品牌</title>
</head>
<body>
<h3>添加品牌</h3>
<form action="" method="post">
    品牌名称:<input id="brandName" name="brandName"><br>
    简介:<input id="companyName" name="companyName"><br>
    排序:<input id="ordered" name="ordered"><br>
    状态:
    <input type="radio" name="status" value="0">禁用
    <input type="radio" name="status" value="1">启用<br>

    <input type="button" id="btn"  value="提交">
</form>

</body>
</html>

6、加入JavaScript部分

思路分析:

  • 给addBrand.html页面中的提交按钮绑定点击事件,并在绑定的匿名函数中发送异步请求。
  • 怎样获取页面上用户输入的数据?
    • 定义一个js对象,用于封装页面上输入的数据,并将这个对象作为发送异步请求时data属性的值。
    • 获取输入框输入的数据,并将获取到的数据赋值给formData对象指定的属性。比如获取品牌名的输入框数据,就把这个数据赋值给formData对象的brandName属性。
    • 状态数据比较特殊:需要判断哪个被选中,再将选中的单选框数据赋值给formData对象的 status属性。
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>添加品牌</title>
</head>
<body>
<h3>添加品牌</h3>
<form action="" method="post">
    品牌名称:<input id="brandName" name="brandName"><br>
    简介:<input id="companyName" name="companyName"><br>
    排序:<input id="ordered" name="ordered"><br>
    状态:
    <input type="radio" name="status" value="0">禁用
    <input type="radio" name="status" value="1">启用<br>

    <input type="button" id="btn"  value="提交">
</form>

<!--引入axios的js-->
<script src="js/axios-0.18.0.js"></script>

<script>
    //1.给页面的提交按钮绑定单击事件
    document.getElementById("btn").onclick=function (){
        //将表单数据转为JSON
        var formData={
            brandName:"",
            brandIntro:"",
            ordered:"",
            status:"",
        };
        //获取表单数据
        let brandName=document.getElementById("brandName").value;
        //设置数据
        formData.brandName=brandName;
        let brandIntro=document.getElementById("brandIntro").value;
        formData.brandIntro=brandIntro;
        let ordered=document.getElementById("ordered").value;
        formData.ordered=ordered;
            //状态属性
        let status=document.getElementsByName("status");
        for (let i = 0; i < status.length; i++) {
            if (status[i].checked){
                formData.status=status[i].value;
            }
        }

        //2.发送ajax异步请求
        axios({
            method:"post",
            url:"http://localhost:8080/understandTomcat/add",
            data:formData
        }).then(function(resp){
            //判断响应数据是否为success
            if (resp.data==success){
                location.href="http://localhost:8080/understandTomcat/brand.html";
            }
        })

    }
</script>

</body>
</html>

7、启动访问

输入数据:

点击提交:

已经成功添加,打开brand.html页面验证:

查看数据表中的数据:

已成功添加

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1645228.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何提升通信芯片一次性投片成功率

通信芯片设计是一个非常复杂的系统工程&#xff0c;整体流程设计包括产品定义&#xff0c;算法开发&#xff0c;架构设计&#xff0c;电路设计和验证&#xff0c;后端版图设计&#xff0c;晶圆生产到封装测试等多个环节。在每个环节中&#xff0c;都需要严格遵循设计规则和流程…

2024年 Java 面试八股文——SpringCloud篇

目录 1.Spring Cloud Alibaba 中的 Nacos 是如何进行服务注册和发现的&#xff1f; 2.Spring Cloud Alibaba Sentinel 的流量控制规则有哪些&#xff1f; 3.Spring Cloud Alibaba 中如何实现分布式配置管理&#xff1f; 4.Spring Cloud Alibaba RocketMQ 的主要特点有哪些&…

自编码器网络

1.自编码器网络 自动编码器是一种无监督的数据维度压缩和数据特征表达方法。 无监督 在海量数据的场景下&#xff0c;使用无监督的学习方法比有监督的学习方法更省力。 维度上的压缩 自编码网络可以根据输入的数据&#xff0c;对其进行表征学习。输入数据转换到隐藏层co…

java中如何判断一个数是不是素数(质数)

相关概念 质数就是大于1的自然数字中&#xff0c;只能被1和它自己整除的数。 题目 求101~200之间的质素的个数 代码实现 判断一个数是不是质数 for (int j 2; j < i; j) {if(i % j 0){flag false;break;}}if(flag){System.out.println("当前数字是质数");…

文件删了,回收站清空了怎么恢复?文件恢复软件一览

在日常生活和工作中&#xff0c;我们常常会遇到误删除文件的情况&#xff0c;有时甚至会因为清空了回收站而无法找回这些文件。这些文件可能包含重要的工作数据、个人照片或其他珍贵的回忆。那么&#xff0c;在这种情况下&#xff0c;我们该如何恢复这些被删除且清空回收站的文…

ubuntu配置多版本cuda+cudnn环境,及版本切换方法

ubuntu配置多版本cudacudnn环境&#xff0c;及版本切换方法 环境如下&#xff1a; ubuntu 22.04cuda v11.8cudnn v8.9.7 文章目录 ubuntu配置多版本cudacudnn环境&#xff0c;及版本切换方法1.安装Nvidia显卡驱动1.1卸载默认的驱动nouveau1.2安装nvidia驱动 2.安装cuda3.安装…

《从Paxos到Zookeeper》——第五、六章:经典应用场景

目录 第五章 使用Zookeeper 5.1 服务端部署与运行 5.2 客户端相关 5.2.1 客户端运行 5.2.2 客户端命令 5.3 Java客户端API 5.4 开源客户端 第六章 经典应用场景 6.1 典型应用场景及实现 6.1.1 数据发布/订阅&#xff08;全局配置中心&#xff09; 6.1.2 负载均衡&#xff08;Lo…

谷歌推广和seo留痕具体怎么操作?

留痕跟谷歌推广其实是一回事&#xff0c;你能在谷歌上留痕&#xff0c;其实就是推广了自己的信息&#xff0c;本质上留痕就是在各大网站留下自己的记录&#xff0c;这个记录可以是品牌信息&#xff0c;联系方式&#xff0c;看你想留下什么 如果要问自己怎么操作&#xff0c;正常…

Python 网络编程实践:从基础到进阶

目录 网络编程 一.IP地址简介 1. IP 地址的概念 1.1. IP 地址的表现形式 1.2. IP 地址的作用 2. 查看 IP 地址 3. 检查网络是否正常 4. 小技巧 二.端口和端口号 1. 什么是端口 2. 什么是端口号 3. 端口和端口号的关系 4. 端口号的分类 4.1. 知名端口号 4.2. 动…

网络文件共享

存储类型分三类 直连式存储&#xff1a;DAS存储区域网络&#xff1a;SAN网络附加存储&#xff1a;NAS 三种存储架构的应用场景 DAS虽然比较古老了&#xff0c;但是还是很适用于那些数据量不大&#xff0c;对磁盘访问速度要求较高的中小企业SAN多适用于文件服务器&#xff0c…

毕设:邮件分发系统

文章目录 前言一、登录1.邮箱登录2.账号登录 二、注册三、首页四、写邮件五、收邮件六、草稿箱七、垃圾箱八、已发送九、通讯录十、用户管理十一、邮件管理十二、登录日志总结 前言 分享一下邮件分发系统 一、登录 1.邮箱登录 2.账号登录 二、注册 三、首页 首页有邮件信息&…

本地部署eXtplorer文件管理器并安装内网穿透构建私人云存储服务器

文章目录 1. 前言2. eXtplorer网站搭建2.1 eXtplorer下载和安装2.2 eXtplorer网页测试2.3 cpolar的安装和注册 3.本地网页发布3.1.Cpolar云端设置3.2.Cpolar本地设置 4.公网访问测试5.结语 1. 前言 通过互联网传输文件&#xff0c;是互联网最重要的应用之一&#xff0c;无论是…

OSPF综合实验(超详细易懂)(HCIP)

1、拓扑信息 2、需求分析 3、IP规划 4、配置 5、测试 1、拓扑信息 2、需求分析 R4为ISP&#xff0c;其上只能配置I地址&#xff1b; R4与其他所有直连设备间均使用公有IP 公网中使用的是点到…

每日OJ题_DFS解决FloodFill⑦_力扣LCR 130. 衣橱整理(原剑指Offer13机器人的运动范围)

目录 力扣LCR 130. 衣橱整理&#xff08;原剑指Offer13机器人的运动范围&#xff09; 解析代码 力扣LCR 130. 衣橱整理&#xff08;原剑指Offer13机器人的运动范围&#xff09; LCR 130. 衣橱整理 难度 中等 家居整理师将待整理衣橱划分为 m x n 的二维矩阵 grid&#xff…

选择气膜生产厂家的三大关键因素—轻空间

随着气膜体育馆在建筑领域的不断发展&#xff0c;越来越多的客户开始考虑定制气膜体育馆以满足特定需求。然而&#xff0c;选择一家靠谱的气膜生产厂家并非易事。为了帮助客户更好地了解选择气膜生产厂家的关键考量&#xff0c;轻空间为您整理了以下三个方面的重要信息&#xf…

RockChip Android13 NFC SL6320移植

环境:RK3568 Android13 一:驱动移植 1、驱动 将SL6320驱动代码拷贝至kernel-5.10/drivers/misc/sl6320/ 特殊说明:勿将驱动代码放置于kernel-5.10/drivers/nfc/目录下,会导致sl6320驱动生成设备节点时因/dev/nfc节点以创建而加载失败。 2、DTS 本次硬件设计电路走I2C协…

免费开源线上线下交友社交圈子系统 小程序+APP+H5 可支持二开!

为什么要玩社交软件&#xff1a;互联网社交软件的独特优势 首先&#xff0c;社交软件为我们提供了一个便捷的沟通方式。在传统的交往方式中&#xff0c;人们需要面对面交流&#xff0c;这种方式在时间和空间上都受到限制。而社交软件打破了这些限制&#xff0c;无论我们身处何地…

深度学习之基于YOLOv5电线电缆目标检测系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 项目简介&#xff1a;深度学习之基于YOLOv5电线电缆目标检测系统 本项目旨在利用深度学习技术&#xff0c;特别是基…

VS Code 远程连接 SSH 服务器

文章目录 一、安装 Remote - SSH 扩展并连接远程主机二、免密连接远程主机1. 生成 SSH 密钥对2. 将公钥复制到远程服务器3. 配置 SSH 客服端4. 连接测试 随着技术的不断迭代更新&#xff0c;在 Linux 系统中使用 Vim、nano 等基于 Shell 终端的编辑器&#xff08;我曾经也是个 …

ubuntu20.04通过minio配置FTP服务

项目需求&#xff1a;原来存储文件用的是oss服务存储的&#xff0c;本地minio服务。因为项目需求需要ftp服务来访问文件。查看了一下minio官网4.20版本以后的支持ftp服务。官网介绍如下&#xff1a; 参考文章地址如下&#xff1a;File Transfer Protocol (FTP/SFTP) — MinIO …