JavaWeb之综合案例
前言
这一节讲一个案例
1. 环境搭建
然后就是把这些数据全部用到sql语句中执行
2.查询所有-后台&前台
我们先写后台代码
2.1 后台
2.2 Dao
BrandMapper:
注意因为数据库里面的名称是下划线分割的,我们类里面是驼峰的,所以要映射
这里我们已经写好了
BrandMapper:
@Select("select * from tb_brand ")@ResultMap("brandResultMap")List<Brand> selectAll();
2.3 services
这下写这个我们先写一个接口,再写实现类
这个services要被servlet调用,所以我们在写servlet
以前是要在这里面创建一个services的类
现在我们就可以用接口指向实现类
BrandServiceImpl:
这个service我们就写完了
现在开始写servlet
SelectAllServlet:
运行一下试一下
现在开始写前端代码
页面加载完成之后发送异步请求—》有mounted
brand.html:原:
现在:
这样我们就写好了
刚好48条我们就做好了
3. 新增品牌
BrandMapper:
BrandService:
BrandServiceImpl:
AddServlet:
下面开始写前端代码
brand.html:
这里是提交按钮,提交以后就会调用addBrand方法
开始修改
结果发现点了提交没有反应,f12一下
发现我们数据是添加成功了的
问题主要是我们一个用下划线的this
关闭是关闭了,但是我们下面的数据没有显示完全
因为我们只是关闭的窗口,这个brand.html没有刷新的
所以我们的代码那里要重新查询一下
但是这个方法我们已经写过了,所以我们定义一个方法来专门存储
这样就可以了
这样就可以了
这样我们不刷新也有了
接下来我们在做一个小功能,就是新增完成之后,有一个新增成功的提示框
我们就要这个消息提示
4. Servlet代码优化
一个功能写一个servlet感觉不太好,这样写的太多了
这样的话就意味着,会有很多的请求路径来访问servlet,但是我们@WebServlet(“/addServlet”)这样写就写死了,就只能添加了
但是还有一个问题,就是我们的servlet只能执行doget和dopost,但我们要写我们自定义的方法,怎么办呢
所以就不能继承HttpServlet了
BaseServlet:
然后我们在定义一个brandSrvlet,它就继承我们定义的这个servlet就可以了,不用继承HttpServlet
BaseServlet:
写的这个/brand/SelectAll
但还是要先去执行BaseServlet中的service方法
这里的后面的参数就是执行方法的参数
执行方法的参数是什么呢,就是response和request
我们丰富一下
这样我们就写完了
接下来我们完成真正的功能
BrandServlet:
就把原来servlet里面的代码考过去就可以了
然后修改页面的访问路径
brand.html:
然后注释掉
5. 批量删除
Dao:
BrandMapper:
BrandMapper.xml:
这里问号该有几个呢—》动态sql拼接
service:
BrandService:
BrandServiceImpl:
BrandServlet:
brand.html:
批量删除在这里
然后绑定一个单击事件
然后写出方法
这个是我们选中的复选框,之后会把数据放在这个模型里面
我们来试一下
看有没有我们选中的数据
我们来复制一下
就是这个样子
可以看出,这就是一个数组,里面是一个一个brand对象
我们需要的是id
我们增加一个id的模型数据
这样我们就写完了
但是我们点了删除没有反应
f12
看一下报错,就知道了,sql语句有问题
BrandMapper.xml:
我们发现了问题就是where后面少写了id
这样就成功了
点删除的话,我们应该提示一下,是否要这样操作,不然误操作了
这里确定就执行then的逻辑,取消就执行catch的逻辑
brand.html:
这样就可以了
6. 分页查询
6.1 分析
要分页查询的话,数据库里面也要分页查询
我们先来创建pageBean
6.2 实现
BrandMapper:
BrandService:
BrandServiceImpl:
BrandServlet:
测试一下:
现在开始写前端代码
我们要改造这个方法,因为我们只需要查询一页就可以了
注意我们resp获取出来的数据是一个大类
测试一下,发现有错,主要是因为我们的selectByPage没有写ResultMap,添加上去就可以了
但是还不能翻页
现在我们改一下共400条那里
因为这里我们写的是400
改一下,写成模型数据
我们在selectAll中设置这个模型值
但是这里默认显示的是4页,我们也改一下
原因就是因为这里的currentPage,这里默认是4
改为1
现在我们应该点完页码数据就应该产生变化
这里就要看上面的两个方法了
size-change是每页显示条数发生变化,执行的代码
current-change是当前页码发生变化显示条数
我们给这里的currentPage写成动态的,会变化的
这样就可以了
然后添加模型数据
这样就可以了
这样就可以动态变化了
然后在修改另一个方法
这里是可以输入修改的,但是不能用数字键盘
7. 条件查询
7.1后台
BrandMapper:
BrandMapper.xml:
第一个sql语句我们就写完了
第二个和第一个就比较类似了
因为我们第二个sql语句的方法只有一个参数,所以没有param注解,所以不用brand.来
然后我们ctrl+r整体替换就可以了
BrandService:
BrandServiceImpl
BrandServlet:
分页还好传递,通过get来就是url
但是brand条件怎么传递呢
brand.html:
原:
我们这里增加一个data这个JSON数据,我们既有url参数,也有请求体里面的参数,请求体的参数获取—》就可以获取条件了
BrandServlet:
7.2 前端
查询条件我们也要绑定一个对象模型
这里其实我们都绑定上了
我们先给这个按钮绑定一个单击事件
已经有了
发现并没有错
然后修改selectAll
注意还要修改一下我们访问的方法名
但是我们运行出来会报错
我们发现是动态sql的问题
为什么会这样呢,经过我的仔细检查,发现错误就是
就是动态sql那里不能写注释,写了注释就要出错,改了就没事了
这个没有带条件的查询的就是全部
现在我们优化一下,就是当前状态那里改为启用和禁用
Brand实体类里面有一个逻辑视图,就是这个就可以了
这里就是那个状态的展示
我们改一下
这个就是逻辑视图的妙
8. 前端代码优化
如果里面能直接写this就很方便了
这样写就相当于lambda表达式,里面就不用写_this了
总结
以后开始讲SSM了
相关文章:
JavaWeb之综合案例
前言 这一节讲一个案例 1. 环境搭建 然后就是把这些数据全部用到sql语句中执行 2.查询所有-后台&前台 我们先写后台代码 2.1 后台 2.2 Dao BrandMapper: 注意因为数据库里面的名称是下划线分割的,我们类里面是驼峰的,所以要映射 …...
基于Spring Boot+Unipp的博物馆预约小程序(协同过滤算法、二维码识别)【原创】
🎈系统亮点:协同过滤算法、二维码识别; 一.系统开发工具与环境搭建 1.系统设计开发工具 后端使用Java编程语言的Spring boot框架 项目架构:B/S架构 运行环境:win10/win11、jdk17 前端: 技术:框…...
使用 Maven 构建一个简单的 Java 项目
Apache Maven 是一个强大的构建自动化工具,主要用于 Java 项目。它简化了构建和管理任何基于 Java 的项目的流程。 本指南将涵盖 Maven 的安装、设置一个简单的 Java 项目以及使用 Maven 运行该项目。 1. 安装 安装 Java 在安装 Maven 之前,需要确保…...
【51单片机】LCD1602液晶显示屏
学习使用的开发板:STC89C52RC/LE52RC 编程软件:Keil5 烧录软件:stc-isp 开发板实图: 文章目录 LCD1602存储结构时序结构 编码 —— 显示字符、数字 LCD1602 LCD1602(Liquid Crystal Display)液晶显示屏是…...
UDP协议
UDP(UserDatagramProtocol)是一个简单的传输层协议,特点:无连接、不可靠、面向数据包、全双工。 报文结构 1.源端口: 源端口号,需要对方回信时选用,不需要时全部置0. 2.目的端口:目…...
阅读 ADiffusion-Based Framework for Multi-Class Anomaly Detection
A Diffusion-Based Framework for Multi-Class Anomaly Detection 我觉得引言部分写的不错,将问题清楚的讲出来了,值得借鉴!! 摘要 基于重建的方法在异常检测方面取得了显著成果。最近流行的扩散模型的卓越图像重建能力引发了研…...
网络云计算】2024第47周-每日【2024/11/21】周考-实操题-RAID6实操解析1
文章目录 1、RAID6配置指南(大致步骤)2、注意事项3、截图和视频 网络云计算】2024第47周-每日【2024/11/21】周考-实操题-RAID6实操 RAID6是一种在存储系统中实现数据冗余和容错的技术,其最多可以容忍两块磁盘同时损坏而不造成数据丢失。RAID…...
ts- declare关键词及vue3报错“Window typeof globalThis”上不存在属性“nextLoading”、`
报错“Window & typeof globalThis”上不存在属性“nextLoading”、 代码环境:vue3、ts 阮一峰讲解 declarets 用法告诉编译器某个类型是存在的 下面的例子是脚本使用浏览器全局对象document。 declare var document; document.title "Hello";上面…...
【STM32】在 STM32 USB 设备库添加新的设备类
说实话,我非常想吐槽 STM32 的 USB device library,总感觉很混乱。 USB Device library architecture 根据架构图: Adding a custom class 如果你想添加新的设备类,必须修改的文件有 usbd_desc.cusbd_conf.cusb_device.c 需要…...
【单点知识】基于PyTorch讲解自动编码器(Autoencoder)
文章目录 0. 前言1. 自动编码器的基本概念1.1 定义1.2 目标1.3 结构 2. PyTorch实现自动编码器2.1 导入必要的库2.2 定义自动编码器模型2.3 加载数据2.4 训练自动编码器 3. 自动编码器的意义4. 自动编码器的应用4.1 图像处理4.2自然语言处理:4.3推荐系统:…...
html+js实现图片的放大缩小等比缩放翻转,自动播放切换,顺逆时针旋转
效果图: <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>图片预览</title><sty…...
【蓝桥杯C/C++】翻转游戏:多种实现与解法解析
博客主页: [小ᶻZ࿆] 本文专栏: 蓝桥杯C/C 文章目录 💯题目💯问题分析解法一:减法法解法二:位运算解法解法三:逻辑非解法解法四:条件运算符解法解法五:数组映射法不同解法的比较…...
介绍一下toupper(ch);函数(c基础)
hi , I am 36 适合对象c语言初学者 toupper(ch1); tolower(ch2); 是返回ch的大写或小写的字符但并不改变ch 若传递数字仍返回该数字 格式 #include<ctype.h> char res toupper(ch); 链接扫雷游戏代码分享(c基础)-CSDN博客 hi , I am 36. thanks for your look…...
如何使用Python代码实现给GPU预加热
如何使用Python代码实现给GPU预加热 一、引言二、使用深度学习框架进行预加热2.1 TensorFlow预加热2.2 PyTorch预加热三、使用CUDA进行预加热四、预加热的效果评估与优化五、结论与展望在高性能计算和深度学习领域,GPU(图形处理器)已经成为不可或缺的加速工具。然而,在实际…...
基于 SpringBoot 的作业管理系统【附源码】
基于 SpringBoot 的作业管理系统 效果如下: 系统注册页面 学生管理页面 作业管理页面 作业提交页面 系统管理员主页面 研究背景 随着社会的快速发展,信息技术的广泛应用已经渗透到各个行业。在教育领域,课程作业管理是学校教学活动中的重要…...
LeetCode题解:26.删除有序数组中的重复项【Python题解超详细,双指针法】,知识拓展:原地修改
题目描述 给你一个 非严格递增排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。 考虑 nums 的唯一元素的数量为 k &…...
docker 容器运行Ruoyi-cloud
1,linux系统安装openjdk1.8,mvn,dokcer,node,git 2,拉取代码 1)查看gitee仓库地址 2)创建/app文件夹,进入app目录 mkdir /app cd /app 3)clone代码 4)修改配置文件中nacos地址 # 修改注…...
【Unity How】Unity中如何实现物体的匀速往返移动
直接上代码 using UnityEngine;public class CubeBouncePingPong : MonoBehaviour {[Header("移动参数")][Tooltip("移动速度")]public float moveSpeed 2f; // 控制移动的速度[Tooltip("最大移动距离")]public float maxDistance 5f; // 最大…...
STM32完全学习——系统时钟设置
一、时钟框图的解读 首先我们知道STM32在上电初始化之后使用的是内部的HSI未经过分频直接通过SW供给给系统时钟,由于内部HSI存在较大的误差,因此我们在系统完成上电初始化,之后需要将STM32的时钟切换到外部HSE作为系统时钟,那么我…...
简单理解下基于 Redisson 库的分布式锁机制
目录 简单理解下基于 Redisson 库的分布式锁机制代码流程:方法的调用:具体锁的实现:riderBalance 方法:tryLock 方法(重载):tryLock 方法(核心实现): 简单理解…...
ruoyi框架完成分库分表,按月自动建表功能
前提 这个分库分表功能,按月自动建表,做的比较久了,还没上线,是在ruoyi框架内做的,踩了不少坑,但是已经实现了,就分享一下代码吧 参考 先分享一些参考文章 【若依系列】集成ShardingSphere S…...
数据结构 【单链表练习】
今天来探讨两个练习题要使用的思想为快慢指针。 1、返回链表的中间节点 给你单链表的头结点 head ,请你找出并返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。 整体思路如下图所示: 代码如下: /*** Definition f…...
wsl虚拟机中的dockers容器访问不了物理主机
1 首先保证wsl虚拟机能够访问宿主机IP地址,wsl虚拟机通过vEthernet (WSL)的地址访问,着意味着容器也要通过此IP地址访问物理主机。 2 遇到的问题:wsl虚拟机中安装了docker,用在用到docker容器内的开发环境,但是虚拟机…...
Elasticsearch 开放推理 API 增加了对 IBM watsonx.ai Slate 嵌入模型的支持
作者:来自 Elastic Saikat Sarkar 使用 Elasticsearch 向量数据库构建搜索 AI 体验时如何使用 IBM watsonx™ Slate 文本嵌入。 Elastic 很高兴地宣布,通过集成 IBM watsonx™ Slate 嵌入模型,我们的开放推理 API 功能得以扩展,这…...
【如何用更少的数据作出更好的决策】-gpt生成
如何用更少的数据作出更好的决策 用更少的数据作出更好的决策是一种能力的体现,需要结合有效的方法、严谨的逻辑以及对问题的深刻理解。以下是一些可以帮助你实现这一目标的策略: 明确目标 在收集和分析数据之前,先明确你的决策目标是什么…...
webview4/edgewebbrower学习记录——执行js
webview2可执行js方法:WVBrowser1.ExecuteScript(js, 1003) 参数1为js语句,参数2为命令号,执行完毕,会执行 procedure TBrowserFrame.WVBrowser1ExecuteScriptCompleted(Sender: TObject; aErrorCode: HRESULT; const aResultOb…...
Java文件上传解压
目录结构 工具类 枚举 定义文件类型 public enum FileType {// 未知UNKNOWN,// 压缩文件ZIP, RAR, _7Z, TAR, GZ, TAR_GZ, BZ2, TAR_BZ2,// 位图文件BMP, PNG, JPG, JPEG,// 矢量图文件SVG,// 影音文件AVI, MP4, MP3, AAR, OGG, WAV, WAVE}为了避免文件被修改后缀࿰…...
人工智能(AI)与机器学习(ML)基础知识
目录 1. 人工智能与机器学习的核心概念 什么是人工智能(AI)? 什么是机器学习(ML)? 什么是深度学习(DL)? 2. 机器学习的三大类型 (1)监督式学…...
autoware(2)运行自己的数据集
上一节完成了autoware.ai的安装和编译跑通了demo数据集,本将自己录制的数据包用于测试 1.修改点云地图 将加载点云地图的my_map.launch文件复制并命名为my_map_test.launch, (1)point cloud处替代原来的点云地图为自己的&#…...
HBase Java基础操作
Apache HBase 是一个开源的、分布式的、可扩展的大数据存储系统,它基于 Google 的 Bigtable 模型。使用 Java 操作 HBase 通常需要借助 HBase 提供的 Java API。以下是一个基本的示例,展示了如何在 Java 中连接到 HBase 并执行一些基本的操作,…...
巧用观测云可用性监测(云拨测)
前言 做为系统运维或者开发,很多时候我们需要能够实时感知我们所运维的系统和服务的情况,比如以下的场景: 系统上线前测试:包括功能完整性检查,确保页面元素(如图像、视频、脚本等)都能够正常…...
Chrome离线安装包下载
1、问Chrome的官网:https://www.google.cn/chrome/ 直接下载的是在线安装包,安装需要联网。 2、如果需要在无法联网的设备上安装Chrome,需要在上面的地址后面加上?standalone1。 Chrome离线安装包下载地址:https://www.google.c…...
ceph的RBD管理
0 块设备介绍 Ceph 的块设备(Ceph Block Device, RBD)是其存储服务的一种实现形式,通过 librbd 库或 Linux 内核模块提供块设备支持,所以可以与主流云平台(如 OpenStack)、虚拟化平台(如 KVM&a…...
【数论】莫比乌斯函数及其反演
文章目录 一、介绍二、莫比乌斯函数的算法求解三、例题 在学习之前,先来了解一下常见定义吧(OVO): 常见数论函数分为两种: { 完全积性函数:对于任意 p , q ∈ N ,有 f ( p ⋅ q ) f ( p ) ⋅ …...
低音运行,约克VRF中央空调让居家生活静享安宁
不仅节能省电,约克VRF中央空调还特别注重运行的静音效果,低至17dB超低运行噪音,让你在享受舒适环境的同时,也能拥有宁静的居家氛围。无论是工作、学习还是休息,都不受噪音干扰。...
使用 Ansys LS-DYNA 进行玻璃瓶包装跌落分析
使用 Ansys LS-DYNA 进行玻璃瓶包装跌落分析 玻璃瓶包装跌落分析 使用两个玻璃瓶,其中一个为纸盒包装,用来演示包装效果。 Johnson–Holmquist 损伤模型用于玻璃 (MAT_JOHNSON_HOLMQUIST_CERAMICS)纸箱包装采用各向同性弹性材料模型。瓶子将从 300 毫米…...
Windows系统编程 - 进程遍历
文章目录 前言进程的遍历CreateToolhelp32SnapshotProcess32FirstProcess32Next进程遍历 总结 前言 各位师傅好,我是qmx_07,今天给大家讲解进程遍历的相关知识点 进程的遍历 快照:使用vmware虚拟机的时候,经常需要配置环境服务…...
【电路笔记 TMS320F28335DSP】时钟+看门狗+相关寄存器(功能模块使能、时钟频率配置、看门狗配置)
时钟源和主时钟(SYSCLKOUT) 外部晶振:通常使用外部晶振(如 20 MHz)作为主要时钟源。内部振荡器:还可以选择内部振荡器(INTOSC1 和 INTOSC2),适合无需高精度外部时钟的应…...
gt730是什么显卡?gt730显卡性能参数介绍
NVIDIA GeForce GT 730是一款入门级图形卡,于2014年推出,基于40纳米工艺和GF108图形处理器。尽管它支持DirectX 12,但功能级别仅为11_0,这可能会在新的DirectX 12标题中造成问题。GT 730具有96个着色单元,16个纹理映射…...
Swift内存访问冲突
内存的访问,发生在给变量赋值的时候,或者传递值(给函数)的时候,例如 var one 1//向one的内存区域发起一次写的操作 print("\(one)")//向one的内存区域发起一次读的操作 在 Swift 里,有很多修改…...
2024.6使用 UMLS 集成的基于 CNN 的文本索引增强医学图像检索
Enhancing Medical Image Retrieval with UMLS-Integrated CNN-Based Text Indexing 问题 医疗图像检索中,图像与相关文本的一致性问题,如患者有病症但影像可能无明显异常,影响图像检索系统准确性。传统的基于文本的医学图像检索࿰…...
力扣刷题--21.合并两个有序链表
I am the best !!! 题目描述 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1: 输入:l1 [1,2,4], l2 [1,3,4] 输出:[1,1,2,3,4,4] 示例 2…...
Diving into the STM32 HAL-----DAC笔记
根据所使用的系列和封装,STM32微控制器通常只提供一个具有一个或两个专用输出的DAC,除了STM32F3系列中的少数零件编号实现两个DAC,第一个具有两个输出,另一个只有一个输出。STM32G4 系列的一些较新的 MCU 甚至提供多达 5 个独立的…...
每日一题 LCR 078. 合并 K 个升序链表
LCR 078. 合并 K 个升序链表 使用二分法就可以解决 class Solution { public:ListNode* mergeKLists(vector<ListNode*>& lists) {int n lists.size();if(n 0){return nullptr;}ListNode* ans ;ans binMerge(lists,0,n-1);return ans;}ListNode* binMerge(vector…...
如何在分布式环境中实现高可靠性分布式锁
目录 一、简单了解分布式锁 (一)分布式锁:应对分布式环境的同步挑战 (二)分布式锁的实现方式 (三)分布式锁的使用场景 (四)分布式锁需满足的特点 二、Redis 实现分…...
如何利用java爬虫获得淘宝商品评论
在当今数字化时代,数据的价值日益凸显,尤其是对于电商平台而言,商品评论作为用户反馈的重要载体,蕴含着丰富的信息。本文将详细介绍如何利用Java爬虫技术获取淘宝商品评论,包括代码示例和关键步骤解析。 淘宝商品评论的…...
SQLAlchemy,ORM的Python标杆!
嗨,Python的小伙伴们!今天咱们来了解 SQLAlchemy,这可是对象关系映射(ORM)里的超级标杆哦!它就像一座神奇的桥梁,能让我们用 Python 代码轻松地和数据库打交道,不用写复杂的 SQL 语句…...
时序论文23|ICML24谷歌开源零样本时序大模型TimesFM
论文标题:A DECODER - ONLY FOUNDATION MODEL FOR TIME - SERIES FORECASTING 论文链接:https://arxiv.org/abs/2310.10688 论文链接:https://github.com/google-research/timesfm 前言 谷歌这篇时间序列大模型很早之前就在关注ÿ…...
java http body的格式 application/x-www-form-urlencoded不支持文件上传
在Java中,HTTP请求的body部分可以包含多种格式的数据,主要包括以下几种: application/x-www-form-urlencoded:这种格式将数据编码成键值对的形式,键和值都进行了URL编码,键值对之间用&符号连接。…...
【头歌实训:利用kmp算法求子串在主串中不重叠出现的次数】
头歌实训:利用kmp算法求子串在主串中不重叠出现的次数 文章目录 任务描述编程要求测试说明输入格式输出格式样例输入1样例输出1样例输入2样例输出2 源代码: 任务描述 本关任务:编写一个程序,利用kmp算法求子串在主串中不重叠出现…...