JavaWeb之综合案例

news2024/11/23 19:24:52

前言

这一节讲一个案例

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.coloradmin.cn/o/2246200.html

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

相关文章

PLC与PLC跨网段通讯的几种方法:厂区组网实践

PLC通常通过以太网或其他工业网络协议&#xff08;如PROFINET、Modbus TCP等&#xff09;进行通信。当PLC位于不同的网段时&#xff0c;它们不能直接通信&#xff0c;需要特殊的配置或设备来实现通信&#xff0c;不同网段的PLC通讯变得尤为重要。 随着工业网络的发展和工业4.0概…

原生openGauss与Oracle数据库函数兼容性对比验证测试

———————————————— 一、测试目的 近期在进行调研去O,为此研究了下原生openGauss和Oracle数据库兼容性&#xff0c;特整理测试了Oracle常用函数和openGauss数据库的对比测试。 二、创建DUAL虚拟表 openGauss 数据库不提供DUAL虚拟表&#xff0c;需要通过如下方…

创建HTTPS网站

每天&#xff0c;我们都会听到网络上发生身份盗窃和数据侵权的案例&#xff0c;这导致用户对自己访问的网站更加怀疑。他们开始更加了解自己将个人信息放在哪里以及信任哪些类型的网站。了解如何使网站使用HTTPS变得比以往任何时候都更加重要。 解读缩略词&#xff1a;HTTP与HT…

Bokeh实现大规模数据可视化的最佳实践

目录 引言 一、Bokeh简介 二、安装Bokeh 三、数据准备 四、性能优化 五、创建图表 六、添加交互功能 七、应用案例 八、高级技巧 九、总结 引言 在数据科学领域,数据可视化是一个至关重要的环节。通过可视化,我们可以直观地理解数据的特征和趋势,为数据分析和决策…

数据结构-8.Java. 七大排序算法(上篇)

本篇博客给大家带来的是排序的知识点, 由于时间有限, 分两天来写, 上篇主要实现 前四种排序算法: 直接插入, 希尔, 选择, 堆排。 文章专栏: Java-数据结构 若有问题 评论区见 欢迎大家点赞 评论 收藏 分享 如果你不知道分享给谁,那就分享给薯条. 你们的支持是我不断创作的动力 …

HARCT 2025 新增分论坛7:机器人和自动化的新趋势

会议名称&#xff1a;机电液一体化与先进机器人控制技术国际会议 会议简称&#xff1a;HARCT 2025 大会时间&#xff1a;2025年1月3日-6日 大会地点&#xff1a;中国桂林 主办单位&#xff1a;桂林航天工业学院、广西大学、桂林电子科技大学、桂林理工大学 协办单位&#…

海洋通信船舶组网工业4G路由器应用

船舶是浩瀚海洋中探索与贸易的载体&#xff0c;更是船员们生活与工作的家园。为了在广阔的水域中搭建起稳定、高效的网络桥梁&#xff0c;工业4G路由器以卓越的通信组网能力&#xff0c;为船舶组网提供网络支持。 工业4G路由器以其强大的信号发射能力&#xff0c;确保船舶内部…

《Vue零基础入门教程》第三课:起步案例

往期内容 《Vue零基础入门教程》第一课&#xff1a;Vue简介 《Vue零基础入门教程》第二课&#xff1a;搭建开发环境 做为第一个案例, 主要给大家介绍vue的最基本使用. vue使用的3步曲(重点) 引入vue.js编写页面(视图)创建App实例并挂载 1) 引入vue.js 在html的头部, 通过…

【unity小技巧】一些unity3D灯光的使用与渲染及性能优化方案

文章目录 天空盒反射配置太阳耀斑眩光烘培光照烘培光照时弹出错误&#xff0c;记得勾选模型下面的选择阴影项目配置光源模型模型shader的问题 全局光照混合光照模式混合照明模式减性照明模式Shadowmask照明模式间接烘焙照明模式 环境光遮罩灯光探针反射探针技术关闭反射探针可以…

【单元测试】【Android】JUnit 4 和 JUnit 5 的差异记录

背景 Jetbrain IDE 支持生成 Test 类&#xff0c;其中选择JUnit5 和 JUnit&#xff0c;但是感觉这不是标准的单元测试&#xff0c;因为接口命名吧。 差异对比 两者生成的单测API名称同原API&#xff0c;没加test前缀的。使用差异主要表现在&#xff1a; setUp &#xff06; …

Nuxt3:拉取项目模板失败问题解决方法

问题描述 使用官网提供的命令npx nuxilatest init <project-name> 创建Nuxt3项目时&#xff0c;遇到了拉取项目模板失败的问题&#xff0c;报错信息如下 先分析一下这行命令在做的事情&#xff0c;结合之前的经验来看&#xff0c;似乎是在尝试通过该网址返回的元数据信息…

在 Sui 区块链上创建、部署与测试自定义 move _coin合约的完整教程

系列文章目录&#x1f60a; Task1&#xff1a;hello_move&#x1f340; Task2&#xff1a;move_coin&#x1f340; Task3&#xff1a;move_nft&#x1f340; 目录 系列文章目录&#x1f60a;引言一、更新本地代码1、查看当前项目的远程仓库信息。2、将远程仓库的最新代码同步到…

三层交换机静态路由实验

1、前置知识 2、实验目的 3、实验器材&#xff1a; 3560-23PS交换机2台、主机4台、交叉线1根和直通网线4根。 4、实验规划及拓扑 实验要求&#xff1a; &#xff08;1&#xff09;在交换机A和交换机B上分别划分基于端口的VLAN&#xff1a; 交换机 VLAN 端口成员 交换机…

iOS构建版本以及Hbuilder打iOS的ipa包全流程

目录 Hbuilder打ipa包 打包之前进行应用配置 应用版本号设置 使用广告标识设置 iOS-云打包 下载并转移安装包 使用Transporter提交版本 应用简介 下载应用 账号登录 提交安装包到apple store connect 在apple开发者平台上确认 总结 本篇文章详细的介绍了使用Hbuil…

java学习-集合

为什么有集合&#xff1f; 自动扩容 数组&#xff1a;长度固定&#xff0c;可以存基本数据类型和引用数据类型 集合&#xff1a;长度可变&#xff0c;可以存引用数据类型&#xff0c;基本数据类型的话需要包装类 ArrayList public class studentTest {public static void m…

返回流类型接口的错误信息处理

返回流类型接口的错误信息处理 前言axios拦截器src/utils/request.ts对应接口 前言 返回流类型接口需要在响应成功回调里拦截&#xff0c;且该接口的status始终是200&#xff0c;尽管后端返回的code可能是非2xx&#xff0c;因此返回流类型的接口&#xff0c;其错误信息需要单独…

用宏实现简单的计算器

大家好&#xff0c;那么经过我们前面几期的学习&#xff0c;我们对宏有了一定的了解&#xff0c;那么我们今天就来试试实现一个简单的加减乘除运算。 我们的思路是使用三目操作符来分别进行加减和乘除的运算&#xff0c;然后用if判断来”进入相关的判断体进而来进行计算。当然…

WEB攻防-通用漏洞文件上传js验证mimeuser.ini语言特性

知识点&#xff1a; 1、文件上传-前端验证 2、文件上传-黑白名单 3、文件上传-user.ini妙用 4、文件上传-php语言特性 详细点&#xff1a; 1、检测层面&#xff1a;前端&#xff0c;后端等 2、检测内容&#xff1a;文件头&#xff0c;完整型&#xff0c;二次渲染等 3、检…

《Vue零基础教程》(3)创建第一个应用案例

1 应用实例 参考官方文档 https://cn.vuejs.org/api/application.html#create-app 示例 const {createApp} Vue// 通过createApp创建一个应用实例 const app createApp({/* 选项 */ }) console.log(app) 分析打印结果, 可知 应用实例是一个对象没有_开头的是公开属性/方…

复合瓦片切片集集合数量与性能关系验证

作者&#xff1a;lzzzz Sci瓦片聚合性能分析 需要聚合的图层越多&#xff0c;性能越低&#xff0c;目前测试以每个瓦片仅包含一个矢量面数据为例&#xff1a; sci数量 服务拉起耗时 前端加载&#xff08;单瓦片&#xff09; 100 10s 500ms 1000 5min 3s 10000 1hour …