当前课程知识点:软件开发实训--动态网站开发 > 6 用户管理功能实现 > 6.3用户存储和删除控制器实现 > 6.3.1用户存储和删除控制器实现
同学你好
欢迎回到软件开发实训课堂
上节课咱们已经在控制器里边实现了列表和编辑
那么这节课咱们来看一下存储和删除
该怎么实现
在编辑和新增完成后
那么你需要去保存
所以我们需要一个存储
存储的是post请求
我们强制让他使用post请求
saveuser
然后我们public String save
这里边路径对单个用户来操作的话
我们就不要加S
editusers
我们就知道我们是对单个用户的操作
对于多个用户
像listuser我们加上一个S表示
我们对多用户的操作
这也是能够通过名称来去判断
一个是因为我们
存储数据量比较大
第二个我们的信息往往需要隐藏
具有一定的隐秘性
所以我们采用post来提交
那么提交上来的时候
他是user对象
user对象
有的信息是不能为空的
所以我们需要一个Valid去校验它
第二个参数我们使用BindingResult
来处理用户信息的校验结果
可以判断
如果校验结果是有错误的
我们可以进行一个处理
这里我们简单的先让他返回到我们的edituser
在返回时
如果说用户的uid不为空
我们就直接返回uid对象
带着uid的user对象
如果说uid为空
那么我们可以让它怎么样
转回到我们编辑的页面
让这个信息可以保留
那么为了保留信息
我们还需要去把原有的信息给他转发过去
这里我们先看如果说没有错误的情况
如果没有错误
我们保存完成后
也可以根据需要去转发
比如说保存完后继续添加
那么我们可以通过一些参数来设置
这里我们直接就让他返回到我们的列表页面
电表页面的返回也不能只是返回到界面
而是返回到控制器
redirect
好
下面我们来添加数据的存储
userService.Save
把我们验证通过的用户存到数据库去
这样我们把错误消息的验证以及我们存储后
转向的目标也就确定好了
这是有关存储方法的一个简单实现
再一个还需要有删除用户和锁定用户状态
对于用户状态的变更
我们讲可以直接使用save来进行存储用户信息
另外一个我们可以单独的使用用户信息
我们先来看删除
删除呢
一般情况下我们用get请求
请求删除的某一个用户
而这个uid是不可以为空的
我们通过路径来获得我们需要的uid
删除完成后
我们需要转向
userService.deleteById
但这里边我们使用注解PathVariable
它能够保证我们的uid不为空
因为PathVariable他的默认是必须要提供uid
才能够对应到这个地址
否则的话是无法对应到这个地址的
所以要注意删除完成后
我们可以直接返回到我们的列表页面
这是对于单个的删除
当然我们可以实现对于多个用户的删除
对于多个用户删除这个请求
我们可以使用get请求
也可以使用post请求
因为传递进来的信息
我们可以使用数组列表集合
或者是我们使用JSON数据
这样我们就能接收到多个用户的ID信息
从而实现一个多用户的删除
这里我们接收JSON格式的数据
删除多个用户
我们使用deletes
然后是uids
uids
我们把它从字符串
转换成我们需要的信息
它是一个JSON的字符串
所以我们直接把它取过来
然后执行userService.delete
list user
这里我们提供了一个user对象的批量删除
并没有提供uid的批量删除
那么这个时候我们需要把服务
去实现一个相对应的方法
另外一个我们可以在这里构造一个user列表
在依赖里面加入我们JSON的依赖包
保存
现在我们来引用JSON包
先注释掉这些错误信息
把错误排除掉
然后我们通过依赖关系构建让他把它下来
好
创建成功后
回过头来
我们再次去引用它
我们打开他的包来看一下
他的包名和它的相关类名
好
就叫JSONObject
好
这回有了
我们把它导进来
好
他没有构造器
是因为它提供了静态的方法
我们通过它来进行解析
解析完成后
我们会得到JSON的一个ID集合
它应该是一个数组
所以我们来设定获得数组对象
直接获得数组对象
getObject
应该是getArray
来获得数组对象
JSON的数组对象
关键字呢
也用uid这里要注意前端传递时使用
uids作为JSON数据的关键键
作为键就行了
这样我们获得了JsonArray这个数组
然后我们可以对这个数组进行处理
看一下
数组它提供了get方法
通过索引来获得一个对象
而我们这里的对象实际上就是一个字符串
所以我们看一下它有没有获取getString
看一下
它直接获得这个字符串
还可以获得整形
我们先用获取整形的方式或者整形Value来获取方式
去把它得到
我们来看一下
还可以把它转换成iterator的对象来进行枚举处理
以及ListIterator
获取成集合
但是不管怎么样
他存的是一个字符串
所以我们还是获取整形数组
进行循环
先把它的长度拿出来
这是它元素的个数
然后我们循环
好
去数据库进行相关的查询
用这个对象来实现
findAll
ByIdArr.get Integer
把转成了整形
转出来后把它放到我们的users里边
这样我们就完成了一个批量删除的操作
但实际上这个我们需要很多次查询
你要是删除一百个
他就要循环一百次去查询
这样相对来说效率就比较低下了
每次循环ilen次来执行
ilen个查询
再去删除
这是一个最基本的一个操作思路
实际上后面我们再来说一下
如何不执行查询
然后进去后直接执行我们的delete语句
更加提高效率
好
我们现在先用这种删除来实现它
最后我们要返回的
到我们列表页面
redirect:/listusers
好
这是我们对删除进行的一个操作
让用户失效
我们可以也使用get请求就可以了
给它加上一个Id
通过路径获取数据
而且uid是必须的
那么我们先去查询他
得到我们的user对象
实际上这里边状态它有两种
一种是有效
一种是无效
我们这里边在实体里边给它注释一下
用户是否有效时
用零来表示无效
用一来表示有效
一定要记住
这个不能乱了
好
我们这里边就来判断它
如果user.get状态等于0
那么我们就把它设置为1
否则的话就把它设置为零
这样去设置它
但实际上你看一下
这是设置用户状态
为有效
就是当无效时
无效时
设置用户状态为有效
相反
如果说我们原来是有效的
现在把它设置时就要设置为无效的
设置为无效
这两条语句就已经把两个状态设置完成了
但实际上你发现实际状态要么是零
要么是一
因此上我们在设置的时候可以使用更简单的方式
看一下
我们用user.set
时直接去设置它
用一减去user点
getValid
这样我们就用一条语句可以实现
它原来如果是有效的
那么我们这样一减的话
它就是无效了
这样相互切换它的状态
最后我们去返回一下
返回到我们的列表页面
好
这就是我们对用户控制器的实现
我们把它保存起来
好
有关用户的控制器服务
还有DAO咱们都已经实现了
那么下面实现的就应该是界面了
好
有关控制器中存储和删除的实现就讲到这里
下节课我们再见
-1.1课程介绍
--1.1.3随堂测试
-1.2网站需求分析
--1.2.4随堂测试
-1.3网站首页分析
--1.3.3随堂测试
-1.4导航菜单分析
--1.4.3随堂测试
-1.5内容区域分析
--1.5.3随堂测试
-1.6内容副页面分析
-1.7编写需求文档
-2.1后端页面总体分析
--2.1.3随堂测试
-2.2用户管理功能设计
--2.2.3随堂测试
-2.3内容与分类功能分析
--2.3.3随堂测试
-2.4网站配置功能设计
--2.4.4随堂测试
-2.5数据库及表结构分析
-总体设计文档
-3.1前台模板约定
--3.1.3随堂测试
-3.2网站配置接口设计
--3.2.3随堂测试
-3.3菜单接口设计
--3.3.3随堂测试
-3.4内容接口设计
--3.4.3随堂测试
-3.5幻灯片接口设计
--3.5.3随堂测试
-补充设计文档
-4.1用户管理功能设计
--4.1.3随堂测试
-4.2菜单管理功能设计
--4.2.3随堂测试
-4.3内容管理功能设计
--4.3.3随堂测试
-4.4网站配置信息设计
--4.4.3随堂测试
-完成设计文档
-4.6随堂测试
-5.1开发环境搭建
--5.1.2随堂测试
-5.2Web前端环境搭建
-5.3创建用户实体
--5.3.2随堂测试
-5.4用户实体表创建与初始化
--5.4.2随堂测试
-5.5用户数据访问接口实现
--5.5.2随堂测试
-5.6环境搭建问题
-6.1用户服务层接口实现
--6.1.2随堂测试
-6.2用户列表和编辑控制器实现
--6.2.2随堂测试
-6.3用户存储和删除控制器实现
-6.4用户添加、编辑界面实现
-6.5用户管理添加用户调试
-7.1用户查询模板实现
--7.1.2随堂测试
-7.2用户信息编辑的实现
-7.3单个用户删除实现
-7.4多个用户删除实现
-8.1用户列表分页基本实现
-8.2用户列表查询结果分页实现
-8.3通用日期处理
-8.4整型日期处理
--8.4.2随堂测试
-8.5枚举数据的应用
-9.1登录逻辑实现
--9.1.2随堂测试
-9.2登录界面及流程调试
--9.2.2随堂测试
-9.3管理主界面实现
--9.3.2随堂测试
-9.4授权验证拦截器实现
--9.4.2随堂测试
-9.5拦截器调试
-10.1分类接口实现
-10.2分类添加、编辑实现
-10.3分类树结构实现
-10.4分类删除实现
--10.4.2随堂测试
-11.1内容实体定义
-11.2相关接口定义
-11.3服务接口实现
-11.4内容添加、编辑模板实现
-11.5内容添加、编辑控制器实现
-11.6内容检索页面实现
-11.7内容分类树实现
-12.1修改UEditor相关问题
-12.2整合UEditor到内容编辑界面
-12.3UEditor图片对话框应用
-12.4文件上传问题处理
-13.1网站配置相关类实现
-13.2网站配置界面模板实现
-13.3网站配置调试
-14.1网站首页布局实现
-14.2菜单Vue组件实现
--14.2.2随堂测试
-14.3幻灯片Vue组件实现
-14.4滚动Vue组件实现
--14.4.2随堂测试
-14.5滚动接口实现
-14.6滚动接口调试
-14.7幻灯片接口实现
-15.1首页区域实现
-15.2首页内容脚本实现
-15.3首页完善
-15.4Vue组件放入单文件
-15.5详细页面实现
-16.1网站测试介绍
-16.2功能测试
-16.3打包发布
-16.4部署运行
--16.4.2随堂测试