项目搭建+添加

一 : 在列表页面,写添加按钮,跳转添加页面

  <%--添加按钮--%><input type="button" value="添加" id="add">
 /*** 跳转添加页面*/$("#add").click(function () {//跳转到添加页面location.href="add.jsp";})

二 : add.jsp 页面

1.添加字段的文本框 

        1① : 下拉框文本框写法:
<%--下拉框--%>客户级别ID: <select id="levelId"><option value="">请选择</option></select><br>
         1② : 图片文本框写法:   图片用的是img
<%--图片文本框写发--%>上传图片: <img src="" alt="" height="45" width="35" id="imgUrl"><input type="file" id="file" onchange="showImg(this)">
<%--添加文本框--%>客户编号:<span id="clientCode"></span><br>
<%--下拉框--%>客户级别ID: <select id="levelId"><option value="">请选择</option></select><br>客户简化:<input type="text" id="clientSimplify"><br>客户名称:<input type="text" id="clientName"><br>所在区域id: <select id="areaId"><option value="">请选择</option></select><br>地址:<span id="addr"></span><br>联系方式:<input type="text" id="phone"><span id="phoneSpan"></span> <br><%--图片文本框写发--%>上传图片: <img src="" alt="" height="45" width="35" id="imgUrl"><input type="file" id="file" onchange="showImg(this)">

2.添加按钮 

<%--添加按钮--%><input type="button" value="添加" id="add">

3 .head中写让预加载数据

        3① : 文档就绪函数

        $(function(){

                //随机单号

                //按照制定的格式输出随机单号

                //调用下拉框

         })

//文档就绪函数/*** 定义函数获取随机单号*/$(function () {//随机数let number = Math.floor(Math.random()*(99999-1000+1)+1000);//按照制定格式输出let  number1= "C-"+number;//给单号的Span赋值$("#clientCode").html(number1)//所在地区下拉框areaDrop()//客户级别下拉框levelDrop()})
3.② 预加载数据中下拉框写法

        注意 : 获取的是下拉框的文本框的字段 追加的值外键实体类中的字段,不要手写

/*** 客户级别下拉框*/function levelDrop() {$.ajax({url:"/clientLevel/levelDrop", //请求路径dataType: "json", //解析success(res) {//打印console.log(res)//循环追加数据for (let x of res) {$("#levelId").append(`<option value="\${x.levelId}">\${x.levelName}</option>`)}},error() {alert("下拉框添加失败")}})}

4 :  body下面 脚本 

                4.① : 给图片绑定点击事件

                        1.获取选中图片路径

                        2.创建文件阅读器

                        3.读取文件阅读

                        4.加载图片路径

                        reader.οnlοad=function(){

                                给图片赋值

                                $("#imgUrl").attr("src",this.result)

                        }

         /*** 给图片绑定点击事件*/function showImg(obj) {//获取选中的图片路径let file = obj.files[0];//创建文件阅读器let reader = new FileReader();//读取文件阅读器reader.readAsDataURL(file);//加载图片路径reader.onload=function () {//给图片赋值$("#imgUrl").attr("src",this.result);}}
        4.② 对添加的姓名进行唯一性校验
/*** 姓名唯一性校验*/$("#clientName").change(function () {//取值let name = $("#clientName").val();//非空校验if (!name){alert("请输入名称,不可为空")//结束return}//对名字进行校验let obj={name}$.ajax({url: "/client/onlyName",type: "post",data: {reqInfos: JSON.stringify(obj)},dataType: "json",success(res) {//打印console.log(res)if (res===0){alert("不重名,可以添加")}else {alert("改名称已经存在")//清空重复数据$("#name").val('')}},error() {alert("服务器故障")}})})
4.③ 给添加按钮绑定点击事件
/*** 添加按钮绑定点击事件*/$("#add").click(function () {let imgUrl ="";//创建formData对象let formData = new FormData;//获取选中的图片let file = $("#file")[0].files[0];//将图片放到创建的formData对象formData.append("file",file)//图片的ajax$.ajax({url: "/file/upload",type: "post",data: formData,async: false,cache: false,contentType: false,processData:  false,dataType: "json",success(res) {console.log(res)  //打印imgUrl=res},error() {alert("图片上传失败")}})//取值let clientCode = $("#clientCode").html()let levelId = $("#levelId").val()let clientSimplify = $("#clientSimplify").val()let clientName = $("#clientName").val()let areaId = $("#areaId").val()let addr = $("#addr").val()let phone = $("#phone").val()//组装添加的对象let obj={clientCode,levelId,clientSimplify,clientName,areaId,addr,phone,imgUrl}//添加的ajax$.ajax({url: "/client/clientAdd",type: "post",data: {reqInfos : JSON.stringify(obj)},dataType: "json",success(res) {console.log(res)  //打印if (res===200){alert("添加成功")//跳转页面location.href="list.jsp"}},error() {alert("添加失败")}})})

三 : Controller层 

1.创建服务器 :

         @WebServlet(" /list/* ")   双 /  第二个/后面是* 缺一不可,否则服务器起不来

2.定义列表的方法
        2.①Controller层四步走

                1.接参

                2.将json对象转换成java对象

                3.将转换后的对象传给service

                4.将处理后的结果响应给用户

                        添加,修改,删除,响应200

/*** 添加*/protected void clientAdd(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//接参String reqInfos = req.getParameter("reqInfos");//转换对象ClientVo clientVo = JSONObject.parseObject(reqInfos, ClientVo.class);//传给serviceservice.clientAdd(clientVo);//响应resp.getWriter().println(JSONObject.toJSONString(200));}

四 : Service层

        1.调用dao层方法,请求数据
        2.处理返回值
/*** 添加* @param clientVo*/@Overridepublic void clientAdd(ClientVo clientVo) {//调用dao层对象clientDao.clientAdd(clientVo);}

五 : dao层

1.定义sql
2.执行sql
/*** 添加* @param clientVo*/@Overridepublic void clientAdd(ClientVo clientVo) {//定义sqlString sql="INSERT INTO t_client(client_code, level_id, client_simplify,client_name,area_id, addr,phone, img_url,client_del)\n" +"              VALUES(?,?,?,?,?,?,?,?,?)";//打印sql语句baseUpdate(sql,clientVo.getClientCode(),clientVo.getLevelId(),clientVo.getClientSimplify(),clientVo.getClientName(),clientVo.getAreaId(),clientVo.getAddr(),clientVo.getPhone(),clientVo.getImgUrl(),clientVo.getClientDel());}

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

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

相关文章

Elasticsearch 进阶

核心概念 索引(Index) 一个索引就是一个拥有几分相似特征的文档的集合。比如说&#xff0c;你可以有一个客户数据的索引&#xff0c;另一个产品目录的索引&#xff0c;还有一个订单数据的索引。一个索引由一个名字来标识(必须全部是小写字母)&#xff0c;并且当我们要对这个索…

107.【C语言】数据结构之二叉树求总节点和第K层节点的个数

目录 1.求二叉树总的节点的个数 1.容易想到的方法 代码 缺陷 思考:能否在TreeSize函数内定义静态变量解决size的问题呢? 其他写法 运行结果 2.最好的方法:分而治之 代码 运行结果 2.求二叉树第K层节点的个数 错误代码 运行结果 修正 运行结果 其他写法 1.求二…

vue2 虚拟DOM 和 真实DOM (概念、作用、Diff 算法)

虚拟 DOM 和 真实DOM&#xff08;概念、作用、Diff 算法&#xff09; 1.1 概念 真实 DOM&#xff08;Document Object Model&#xff09;&#xff1a;是浏览器中用于表示文档结构的树形结构。 <h2>你好</h2>虚拟DOM&#xff1a;用 JavaScript 对象来模拟真实 DOM…

Spring AI 框架介绍

Spring AI是一个面向人工智能工程的应用框架。它的目标是将Spring生态系统的设计原则&#xff08;如可移植性和模块化设计&#xff09;应用于AI领域&#xff0c;并推广使用pojo作为AI领域应用的构建模块。 概述 Spring AI 现在(2024/12)已经支持语言&#xff0c;图像&#xf…

matlab 中的 bug

在matlab中绘图&#xff0c;设置 axe 的背景颜色 axes_in3.Color #00235B ;打印的时候 print(figure_handle1,-dpng,-r300,"merge_yt_ey") ;此时保存的图片无法识别背景颜色 原因在于 matlab 中的 InverseHardcopy 将 InvertHardcopy 设置成 off 则可以解决这个问…

【数据库系列】Liquibase 与 Flyway 的详细对比

在现代软件开发中&#xff0c;数据库版本控制是一个至关重要的环节。为了解决数据库迁移和变更管理的问题&#xff0c;开发者们通常会使用工具&#xff0c;如 Liquibase 和 Flyway。本文将对这两个流行的数据库迁移工具进行详细比较&#xff0c;从基础概念、原理、优缺点到使用…

DVWA靶场通关——DOM型XSS漏洞

一、DOM型XSS攻击概述 DOM型XSS&#xff08;DOM-based Cross-Site Scripting&#xff0c;DOM XSS&#xff09;是一种跨站脚本攻击&#xff08;XSS&#xff09;的变种&#xff0c;它与传统的反射型XSS&#xff08;Reflected XSS&#xff09;或存储型XSS&#xff08;Stored XSS&a…

flink学习(14)—— 双流join

概述 Join:内连接 CoGroup&#xff1a;内连接&#xff0c;左连接&#xff0c;右连接 Interval Join&#xff1a;点对面 Join 1、Join 将有相同 Key 并且位于同一窗口中的两条流的元素进行关联。 2、Join 可以支持处理时间&#xff08;processing time&#xff09;和事件时…

设计模式——Facade(门面)设计模式

摘要 本文介绍了外观设计模式&#xff0c;这是一种通过简单接口封装复杂系统的设计模式。它简化了客户端与子系统之间的交互&#xff0c;降低了耦合度&#xff0c;并提供了统一的调用接口。文章还探讨了该模式的优缺点&#xff0c;并提供了类图实现和使用场景。 1. 外观设计模…

泷羽sec-burp功能介绍(1) 学习笔记

声明&#xff01; 学习视频来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下&#xff0c;如涉及侵权马上删除文章&#xff0c;笔记只是方便各位师傅的学习和探讨&#xff0c;文章所提到的网站以及内容&#xff0c;只做学习交流&#xff0c;其他均与本人以及泷羽sec团队无关&a…

技术创新与人才培养并重 软通动力子公司鸿湖万联亮相OpenHarmony人才生态大会

11月27日&#xff0c;由开放原子开源基金会指导&#xff0c;OpenHarmony项目群工作委员会主办的OpenHarmony人才生态大会2024在武汉隆重举办。软通动力子公司鸿湖万联作为OpenHarmony项目群A类捐赠人应邀出席。大会期间&#xff0c;鸿湖万联不仅深度参与了OpenHarmony人才生态年…

简单快速的上手python

前言 python是一门可以快速上手的语言&#xff0c;原因是它语法简单&#xff0c;api容易使用自由灵活 当我们需要安装任何的三方库时&#xff0c;只需要执行 pip install XX 之后在代码里面import xxx就可以使用python啦。 并且python的代码自由灵活&#xff0c;使用缩进区…

【算法刷题指南】优先级队列

&#x1f308;个人主页&#xff1a; 南桥几晴秋 &#x1f308;C专栏&#xff1a; 南桥谈C &#x1f308;C语言专栏&#xff1a; C语言学习系列 &#x1f308;Linux学习专栏&#xff1a; 南桥谈Linux &#x1f308;数据结构学习专栏&#xff1a; 数据结构杂谈 &#x1f308;数据…

[241129] Docker Desktop 4.36 发布:企业级管理功能、WSL 2 增强 | Smile v4.0.0 发布

目录 Docker Desktop 4.36 发布&#xff1a;企业级管理功能、WSL 2 和 ECI 增强Smile v4.0.0 发布&#xff01;Java 机器学习库迎来重大升级 Docker Desktop 4.36 发布&#xff1a;企业级管理功能、WSL 2 和 ECI 增强 Docker Desktop 4.36 带来了强大的更新&#xff0c;简化了…

vue3+typescript自定义input组件

官方文档&#xff1a;https://cn.vuejs.org/guide/components/events#%E5%AE%9A%E4%B9%89%E8%87%AA%E5%AE%9A%E4%B9%89%E4%BA%8B%E4%BB%B6 触发与监听事件​ 在组件的模板表达式中&#xff0c;可以直接使用 $emit 方法触发自定义事件 (例如&#xff1a;在 v-on 的处理函数中)…

HarmonyOS4+NEXT星河版入门与项目实战(23)------实现手机游戏摇杆功能

文章目录 1、案例效果2、案例实现1、代码实现2、代码解释4、总结1、案例效果 2、案例实现 1、代码实现 代码如下(示例): import router from @ohos.router import {ResizeDirection } from @ohos.UiTest import curves

Qt的定时器应用案例 || Qt的图片添加显示

目录 1.ui界面 2.头文件 3.cpp源文件 4.main文件 5.关于ui_mytimerevent.h的代码编译错误 6.图片的添加展示方式 7.结果展示 8.参考文章 1.ui界面 2.头文件 #ifndef MYTIMEREVENT_H #define MYTIMEREVENT_H#include <QMainWindow> #include <QTime> //#in…

【大数据学习 | Spark-SQL】关于RDD、DataFrame、Dataset对象

1. 概念&#xff1a; RDD&#xff1a; 弹性分布式数据集&#xff1b; DataFrame&#xff1a; DataFrame是一种以RDD为基础的分布式数据集&#xff0c;类似于传统数据库中的二维表格。带有schema元信息&#xff0c;即DataFrame所表示的二维表数据集的每一列都带有名称和类型…

分布式集群下如何做到唯一序列号

优质博文&#xff1a;IT-BLOG-CN 分布式架构下&#xff0c;生成唯一序列号是设计系统常常会遇到的一个问题。例如&#xff0c;数据库使用分库分表的时候&#xff0c;当分成若干个sharding表后&#xff0c;如何能够快速拿到一个唯一序列号&#xff0c;是经常遇到的问题。实现思…

53 基于单片机的8路抢答器加记分

目录 一、主要功能 二、硬件资源 三、程序编程 四、实现现象 一、主要功能 首先有三个按键 分别为开始 暂停 复位&#xff0c;然后八个选手按键&#xff0c;开机显示四条杠&#xff0c;然后按一号选手按键&#xff0c;数码管显示&#xff13;&#xff10;&#xff0c;这…