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

需求

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

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){//获取SqlSessionSqlSession sqlSession=factory.openSession();//获取BrandMapperBrandMapper 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();@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {}@Overrideprotected 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 (){//将表单数据转为JSONvar 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){//判断响应数据是否为successif (resp.data==success){location.href="http://localhost:8080/understandTomcat/brand.html";}})}
</script></body>
</html>

7、启动访问

输入数据:

点击提交:

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

查看数据表中的数据:

已成功添加

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java线上问题排查之内存分析(三)

java线上问题排查之内存分析 使用top命令 top命令显示的结果列表中&#xff0c;会看到%MEM这一列&#xff0c;这里可以看到你的进程可能对内存的使用率特别高。以查看正在运行的进程和系统负载信息&#xff0c;包括cpu负载、内存使用、各个进程所占系统资源等。 2.用jstat命令…

单元测试配置

检查 vendor 目录下 是否有bin目录, bin目录下是否有 phpunit 文件 没有安装 composer require —dev phpunit/phpunit 确认版本是 PHPUnit 9.6.7配置IDE配置php解释器点击绿色箭头,运行测试查看效果备注: 单步调试需要安装 xdebug

CPU炼丹——YOLOv5s

1.Anaconda安装与配置 1.1安装与配置 Anaconda3的安装看下面的教程&#xff1a; 最新Anaconda3的安装配置及使用教程&#xff08;详细过程&#xff09;http://t.csdnimg.cn/yygXD&#xff0c;接上面文章下载后&#xff0c;配置环境变量的时候记得在原来你装的Python更下面添…

Linux的基础IO:文件描述符 重定向本质

目录 前言 文件操作的系统调用接口 open函数 close函数 write函数 read函数 注意事项 文件描述符-fd 小补充 重定向 文件描述符的分配原则 系统调用接口-dup2 缓冲区 缓冲区的刷新策略 对于“2”的理解 小补充 前言 在Linux中一切皆文件&#xff0c;打开文件…

接口测试及常用的接口测试工具(Postman/Jmeter)

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 首先&#xff0c;什么是接口呢&#xff1f; 接口一般来说有两种&#xff0c;一种是程序内部的接…

基于Spring Boot的大学生社团活动平台设计与实现

基于Spring Boot的大学生社团活动平台设计与实现 开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/idea 系统部分展示 前台首页功能界面图&#xff0c;学生在大学生社团…

海外仓管理软件:如果你这么用,它对你有害无益

虽然说海外仓管理系统是个功能强大的工具&#xff0c;但它并不能解决海外仓所有的问题。 那么什么时候适合使用海外仓系统&#xff0c;什么样的使用方式是错误的&#xff1f;今天就系统的和大家聊聊这个问题。 不要把海外仓管理系统当成“救急”工具 很多时候人们在遇到问题的时…

毕业设计:《基于 Prometheus 和 ELK 的基础平台监控系统设计与实现》

前言 《基于 Prometheus 和 ELK 的基础平台监控系统设计与实现》&#xff0c;这是我在本科阶段的毕业设计&#xff0c;通过引入 Prometheus 和 ELK 架构实现企业对指标与日志的全方位监控。并且基于云原生&#xff0c;使用容器化持续集成部署的开发方式&#xff0c;通过 Sprin…

SM618卡件SM480模块和利时

SM618卡件❗电:183-6998-1851❗SM480模块和利时。自动化程度的提高&#xff0c;I/O点数大幅增 加&#xff0c;传统单一配线的方式已经无法满足发展的需 要SM618卡件SM480模块和利时。&#xff0e;对简单、可靠的配线方式的需求日益强烈&#xff0e; 传统接线 - 以并联方式连 接…

我独自升级崛起在哪下载 我独自升级电脑PC端下载教程分享

将于5月8日在全球舞台闪亮登场的动作角色扮演游戏《我独自升级崛起》&#xff0c;灵感源自同名热门动画与网络漫画&#xff0c;承诺为充满激情的游戏玩家群体带来一场集深度探索与广阔体验于一身的奇幻旅程。该游戏以独特的网络武侠世界观为基底&#xff0c;展现了一位普通人踏…

LangChain-RAG学习之 文档加载器

目录 一、实现原理 二、文档加载器的选择 (一).PDF 加载本地文件 可能需要的环境配置 (二).CSV 1、使用每个文档一行的 CSV 数据加载 CSVLoader 2、自定义 csv 解析和加载 &#xff08;csv_args 3、指定用于 标识文档来源的 列&#xff08;source_column (三)、文件目…

从零开始学习生成树实验:一步一步走向精通

大家好&#xff0c;这里是G-LAB IT实验室。 ⭕5月18日 CCNAHCIA 新开班来啦&#x1f44f; 现在报名有早鸟价&#xff0c;感兴趣的可咨询 &#x1f447;&#x1f447;&#x1f447; 敲重点! 可小窗客服咨询课程价格 本课程包含线下面授、线上直播、录播、实验、考试习题、…