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.rhkb.cn/news/476670.html

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

相关文章

043 商品详情

文章目录 详情页数据表结构voSkuItemVo.javaSkuItemSaleAttrVo.javaAttrValueAndSkuIdVo.javaSpuAttrGroupVo.javaGroupAttrParamVo.java pom.xmlSkuSaleAttrValueDao.xmlSkuSaleAttrValueDao.javaAttrGroupDao.xmlAttrGroupServiceImpl.javaSkuInfoServiceImpl.javaSkuSaleAtt…

Django启用国际化支持(2)—实现界面内切换语言:activate()

文章目录 ⭐注意⭐1. 配置项目全局设置&#xff1a;启用国际化2. 编写视图函数3. 配置路由4. 界面演示5、扩展自动识别并切换到当前语言设置语言并保存到Session设置语言并保存到 Cookie ⭐注意⭐ 以下操作依赖于 Django 项目的国际化支持。如果你不清楚如何启用国际化功能&am…

中国省级新质生产力发展指数数据(任宇新版本)2010-2023年

一、测算方式&#xff1a;参考C刊《财经理论与实践》任宇新&#xff08;2024&#xff09;老师的研究&#xff0c;新质生产力以劳动者劳动资料劳动对象及其优化组合的质变为 基本内涵&#xff0c;借 鉴 王 珏 和 王 荣 基 的 做 法构建新质生产力发展水平评价指标体系如下所示&a…

设计模式之 状态模式

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

学习日志015--python单链表

创建 class Node:def __init__(self,data):# 数据域self.data data# 链接域self.next Noneclass LinkList:def __init__(self,):# 初始化头节点self.head None# 记录链表的长度self.size 0 增加 #头插def insert_head(self,value):# 创建新节点node Node(value)q self…

CSP/信奥赛C++语法基础刷题训练(22):洛谷P1075:[NOIP2012 普及组] 质因数分解

CSP/信奥赛C语法基础刷题训练&#xff08;22&#xff09;&#xff1a;洛谷P1075&#xff1a;[NOIP2012 普及组] 质因数分解 题目描述 已知正整数 n n n 是两个不同的质数的乘积&#xff0c;试求出两者中较大的那个质数。 输入格式 输入一个正整数 n n n。 输出格式 输出…

Java开发经验——开发常用工具类

摘要 本文介绍了Java开发中常用的工具类&#xff0c;包括Apache Commons Collections的SetUtils、Google Guava的Sets、Apache Commons Lang的ArrayUtils等&#xff0c;以及它们在集合操作、数组操作、字符串处理、JSON处理等方面的应用。文章还涉及了Optional类、Money工具类…

【Python TensorFlow】进阶指南(续篇三)

在前几篇文章中&#xff0c;我们探讨了TensorFlow的高级功能&#xff0c;包括模型优化、分布式训练、模型解释等多个方面。本文将进一步深入探讨一些更具体和实用的主题&#xff0c;如模型持续优化的具体方法、异步训练的实际应用、在线学习的实现细节、模型服务化的最佳实践、…

阿里系 acw_sc__v3 某教学网站

声明: 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01; 有相关问题请第一时间头像私信联系我删…

1、HCIP之RSTP协议与STP相关安全配置

目录 RSTP—快速生成树协议 STP STP的缺点&#xff1a; STP的选举&#xff08;Listening状态中&#xff09;&#xff1a; RSTP P/A&#xff08;提议/同意&#xff09;机制 同步机制&#xff1a; 边缘端口的配置&#xff1a; RSTP的端口角色划分&#xff1a; ensp模拟…

ChatGPT 与其他 AI 技术在短视频营销中的技术应用与协同策略

摘要&#xff1a; 本文深入探讨了 ChatGPT 及其他 AI 技术在短视频营销中的应用。从技术层面剖析了这些技术如何助力短视频内容创作、个性化推荐、用户互动以及营销效果评估等多方面&#xff0c;通过具体方法分析、数据引用与大模型工具介绍&#xff0c;旨在为短视频营销领域提…

数据结构-树状数组专题(2)

一、前言 接上回树状数组专题&#xff08;1&#xff09;&#xff0c;这次主要介绍差分跟树状数组联动实现区间更新 二、我的模板 重新放了一遍&#xff0c;还是提一嘴&#xff0c;注意下标从0开始&#xff0c;区间左闭右开 template <typename T> struct Fenwick {in…

使用 PyTorch-BigGraph 构建和部署大规模图嵌入的完整教程

当涉及到图数据时&#xff0c;复杂性是不可避免的。无论是社交网络中的庞大互联关系、像 Freebase 这样的知识图谱&#xff0c;还是推荐引擎中海量的数据量&#xff0c;处理如此规模的图数据都充满挑战。 尤其是当目标是生成能够准确捕捉这些关系本质的嵌入表示时&#xff0c;…

启动前后端分离项目笔记

一、项目 首先可以在各大开源软件拿取一个项目&#xff0c;以下项目是在gitee上获取 二、准备工作 配置JDK环境&#xff0c;node.js环境&#xff0c;安装vue脚手架工具以及maven环境 三、前端项目启动 在前端目录下安装依赖 npm install 如果报错可能是因为权限不够&#…

3个月,2000+台虚机迁移成功!

在全球数字化浪潮的推动下&#xff0c;各国政务部门纷纷加速信息化与数字化转型&#xff0c;以提升服务效率和数据安全。在这一背景下&#xff0c;墨西哥某政府部门因迅速增长的政务数字化需求&#xff0c;选择与华为云合作&#xff0c;构建专属的政务私有云平台。 经过多方尝…

GRU (门控循环单元 - 基于RNN - 简化LSTM又快又好 - 体现注意力的思想) + 代码实现 —— 笔记3.5《动手学深度学习》

目录 0. 前言 1. 门控隐状态 1.1 重置门和更新门 1.2 候选隐状态 1.3 隐状态 2. 从零开始实现 2.1 初始化模型参数 2.2 定义模型 2.3 训练与预测 3 简洁实现 4. 小结 0. 前言 课程全部代码&#xff08;pytorch版&#xff09;已上传到附件看懂上一篇RNN的所有细节&am…

微知-plantuml常用语法和要点以及模板?(note over、create、box,endbox、alt,else,end, autonumber)

文章目录 常见语法常用 线条类实线虚线斜箭头或奇数箭头 A ->(10) B: B->(10) A分割线&#xff1a;newpage 颜色类给箭头指定颜色 -[#red]->给某个note加颜色&#xff1a; note over Alice, Bob #FFAAAA: xxx给分组信息着色 alt#red 分组类alt xxx; else xxx; else xx…

YOLOV5/rknn生成可执行文件部署在RK3568上

接上一篇文章best-sim.rknn模型生成好后&#xff0c;我们要将其转换成可执行文件运行在RK3568上&#xff0c;这一步需要在rknpu上进行&#xff0c;在强调一遍&#xff01;&#xff01;rknpu的作用是可以直接生成在开发板上运行的程序 退出上一步的docker环境 exit1.复制best-…

2024信创数据库TOP30之蚂蚁集团OceanBase

数据库作为存储、管理和分析这些数据的关键工具&#xff0c;其地位自然不言而喻。随着信息技术的日新月异&#xff0c;数据库技术也在不断演进&#xff0c;以满足日益复杂多变的市场需求。近日&#xff0c;备受瞩目的“2024信创数据库TOP30”榜单由DBC联合CIW/CIS权威发布&…

Kafka 生产者优化与数据处理经验

Kafka&#xff1a;分布式消息系统的核心原理与安装部署-CSDN博客 自定义 Kafka 脚本 kf-use.sh 的解析与功能与应用示例-CSDN博客 Kafka 生产者全面解析&#xff1a;从基础原理到高级实践-CSDN博客 Kafka 生产者优化与数据处理经验-CSDN博客 Kafka 工作流程解析&#xff1a…