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了

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

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

相关文章

【LeetCode每日一题】——746.使用最小花费爬楼梯

文章目录 一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【题目提示】七【解题思路】八【时空频度】九【代码实现】十【提交结果】 一【题目类别】 数组 二【题目难度】 简单 三【题目编号】 746.使用最小花费爬楼梯 四【题目描述】 给你一…

记录下jekins新建个前端部署配置项

1 新建个item 2 输入项目名称&#xff0c;选择个新的工程或 或者搜个已存在的现有模板 3 添加一些描述 4 &#xff08;可选&#xff09;配置下构建历史保存情况 5 限制下构建节点和选择gitlab或者github 6 写下git仓库地址、账号密码以及分支 7 选择构建工具node以及版本 8 构建…

设计模式之 状态模式

状态模式&#xff08;State Pattern&#xff09;是一种行为型设计模式&#xff0c;它允许一个对象在其内部状态改变时&#xff0c;改变其行为。这种模式将状态的转换和行为的变化解耦&#xff0c;将不同状态的行为封装到独立的状态类中&#xff0c;而通过上下文&#xff08;Con…

uni-app 界面TabBar中间大图标设置的两种方法

一、前言 最近写基于uni-app 写app项目的时候&#xff0c;底部导航栏 中间有一个固定的大图标&#xff0c;并且没有激活状态。这里记录下实现方案。效果如下&#xff08;党组织这个图标&#xff09;&#xff1a; 方法一&#xff1a;midButton的使用 官方文档&#xff1a;ta…

IText创建加盖公章的pdf文件并生成压缩文件

第一、前言 此前已在文章&#xff1a;Java使用IText根据pdf模板创建pdf文件介绍了Itex的基本使用技巧&#xff0c;本篇以一个案例为基础&#xff0c;主要介绍IText根据pdf模板填充生成pdf文件&#xff0c;并生成压缩文件。 第二、案例 以下面pdf模板为例&#xff0c;生成一个p…

合法三元数量计算

问题描述 小C、小U 和小R 三个好朋友喜欢做一些数字谜题。这次他们遇到一个问题&#xff0c;给定一个长度为n的数组a&#xff0c;他们想要找出符合特定条件的三元组 (i, j, k)。具体来说&#xff0c;三元组要满足 0 < i < j < k < n&#xff0c;并且 max(a[i], a[…

【AI系统】GPU 架构回顾(从2018年-2024年)

Turing 架构 2018 年 Turing 图灵架构发布&#xff0c;采用 TSMC 12 nm 工艺&#xff0c;总共 18.6 亿个晶体管。在 PC 游戏、专业图形应用程序和深度学习推理方面&#xff0c;效率和性能都取得了重大进步。相比上一代 Volta 架构主要更新了 Tensor Core&#xff08;专门为执行…

【高阶数据结构】图论

> 作者&#xff1a;დ旧言~ > 座右铭&#xff1a;松树千年终是朽&#xff0c;槿花一日自为荣。 > 目标&#xff1a;了解什么是图&#xff0c;并能掌握深度优先遍历和广度优先遍历。 > 毒鸡汤&#xff1a;有些事情&#xff0c;总是不明白&#xff0c;所以我不会坚持…

日期(练习)

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title></title> </head> <body></body> <script>// 定义一个函数&#xff0c;实现格式化日期对象&#xff0c;返回yyyy-MM-dd…

【IDEA】解决总是自动导入全部类(.*)问题

文章目录 问题描述解决方法 我是一名立志把细节说清楚的博主&#xff0c;欢迎【关注】&#x1f389; ~ 原创不易&#xff0c; 如果有帮助 &#xff0c;记得【点赞】【收藏】 哦~ ❥(^_-)~ 如有错误、疑惑&#xff0c;欢迎【评论】指正探讨&#xff0c;我会尽可能第一时间回复…

企业使用知识管理工具与技术的好处(举例说明)

我们都知道“知识就是力量”这句老话&#xff0c;无论是在工作还是个人生活中&#xff0c;我们每一天都越来越认识到这句话的真谛。近年来&#xff0c;不可否认的是&#xff0c;全球范围内我们都在某种程度上缺乏对于许多企业和大型公司至关重要的高端技术技能。 当然&#xf…

机器学习系列-决策树

文章目录 1. 决策树原理决策树的构建流程 2. 案例步骤 1&#xff1a;计算当前节点的熵步骤 2&#xff1a;对每个特征计算分裂后的熵(1) 按“天气”分裂数据集(2) 计算分裂后的加权熵 步骤 3&#xff1a;计算分裂依据信息增益信息增益率GINI系数&#xff08;二叉树&#xff09; …

resnet50,clip,Faiss+Flask简易图文搜索服务

一、实现 文件夹目录结构&#xff1a; templates -----upload.html faiss_app.py 前端代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widt…

爬虫重定向问题解决

一&#xff0c;问题 做爬虫时会遇到强制重定向的链接&#xff0c;此时可以手动获取重定向后的链接 如下图情况 第二个链接是目标要抓取的&#xff0c;但它是第一个链接重定向过去的&#xff0c;第一个链接接口状态也是302 二&#xff0c;解决方法 请求第一个链接&#xff0c…

一个小的可编辑表格问题引起的思考

11.21工作中遇到的问题 预期&#xff1a;当每行获取红包金额的时候若出现错误&#xff0c;右侧当行会出现提示 结果&#xff1a;获取红包金额出现错误&#xff0c;右侧对应行并没有出现错误提示 我发现&#xff0c;当我们设置readonly的时候&#xff0c;其实render函数依旧是…

高效集成:金蝶盘亏单数据对接管易云

金蝶盘亏单数据集成到管易云的技术实现 在企业日常运营中&#xff0c;数据的高效流转和准确对接是确保业务顺利进行的关键。本文将聚焦于一个具体的系统对接集成案例&#xff1a;如何将金蝶云星空中的盘亏单数据无缝集成到管易云的其他出库模块。 为了实现这一目标&#xff0…

神经网络问题之一:梯度消失(Vanishing Gradient)

梯度消失&#xff08;Vanishing Gradient&#xff09;问题是深度神经网络训练中的一个关键问题&#xff0c;它主要发生在反向传播过程中&#xff0c;导致靠近输入层的权重更新变得非常缓慢甚至几乎停滞&#xff0c;严重影响网络的训练效果和性能。 图1 在深度神经网络中容易出现…

单神经元 PID 解耦控制

单神经元 PID 解耦控制是一种将单神经元自适应控制与解耦控制相结合的方法&#xff0c;适用于多输入多输出&#xff08;MIMO&#xff09;系统。其核心是利用单神经元的自适应能力实现 PID 参数在线调整&#xff0c;同时通过解耦策略减少变量之间的相互影响&#xff0c;提高控制…

数据库类型介绍

1. 关系型数据库&#xff08;Relational Database, RDBMS&#xff09;&#xff1a; • 定义&#xff1a;基于关系模型&#xff08;即表格&#xff09;存储数据&#xff0c;数据之间通过外键等关系相互关联。 • 特点&#xff1a;支持复杂的SQL查询&#xff0c;数据一致性和完整…

线性回归 - 最小二乘法

线性回归 一 简单的线性回归应用 webrtc中的音视频同步。Sender Report数据包 NTP Timestamp&#xff08;网络时间协议时间戳&#xff09;&#xff1a;这是一个64位的时间戳&#xff0c;记录着发送SR的NTP时间戳&#xff0c;用于同步不同源之间的时间。RTP Timestamp&#xff1…