项目一众筹网03_3_管理员维护_新增_保证每个用户的账号唯一_唯一约束_怎么得知原数据里面有没有重复的_MD5加密_生成创建时间_异常类处理

系列文章目录

前言

上一篇笔记里面
1、我们删除的时候其实还应该做删除确认,但是目前没做,这个要记一下
2、还有就是自己不能删除自己,如果管理员登录后在管理员管理里面自己删除了自己,这就尴尬了
细节是很多的,甚至可以说是永无止境,暂时可以不管,后面再慢慢优化
注意一定是拿到session后对比id而不是对比名字
3、还有细节,就是管理员删除不要做物理删除,我们做逻辑删除
生产环境下,绝大多数情况我们都是逻辑删除,而不是真的删除,因为数据真的删了就找不回来了
细节,可以说是永无止境,后面慢慢再优化,只要我们会这个技术了,了解清楚项目结构了,后面只是时间问题

10-管理员维护-新增-目标和思路

在这里插入图片描述

首先要确定一个,我们点击新增按钮的时候,需不需要带数据,也就是带参数过来
在这里插入图片描述
实际上是不需要的
在这里插入图片描述
添加的时候,我们在数据库里面做了账号唯一约束的话
java代码里面做不做检查账号是否重复都可以
java代码里面要是也做了唯一性检查的话,就是双重保护,更加保险
还有一个需要考虑的地方就是新增的时候,用户的密码,用户输入的是明文,但是我们保存到数据库的时候,应该就是秘文了

11-管理员维护-新增-前往表单页面

自己先探索一下

在这里插入图片描述
去找前端页面
在这里插入图片描述
在这里插入图片描述
我们都可以做一个
我们这里就做一个在新建的时候就需要用户设置密码的吧
我们新加一个密码输入框就行了,也不难
简单做一下
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
直接这么跳转行吗
在这里插入图片描述
改成a标签这个是没有任何问题的
但是这个跳转应该也要改一下,因为这样的话,是直接访问不了的,能直接访问的只有webapp下的页面
在这里插入图片描述

在这里插入图片描述
因为除了webapp下的jsp等资源是可以直接访问的,其它的都被保护起来了,可以这么理解
所以我们需要后台帮我们,要么就是写一个控制器跳转,要么就是写一个view-controller,这样就少写一个控制器
但是单纯页面跳转,没有参数的我们都可以用view-controller来实现
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
跳转就成了
下面把新增页面完善即可,跟以前一样,把前端代码我们需要的部分拷贝过来,该改的地方改一改,这里就不再赘述了
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
复制一下代码粘贴进去即可
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
然后就可以写后台代码了,后台代码很简单,暂时我们先随便写一些,在里就真的不赘述了
在这里插入图片描述
后台逆向工程基本都帮我们写好了,没啥好说的,直接三层那样简单的用就行
代码写好之后,测试一下看看
需要注意,前端链接的时候不能加参数了,因为我们的参数是动态用户输入的
后端直接获取前端的name属性就可以获取到了
在这里插入图片描述
另外需要注意的是,我们获取name属性,在后台是怎么去获取的,这个要非常清晰
否则根本就没入门
用什么注解,什么注解都行吗,显然不是
在这里插入图片描述
新增成功之后返回去哪里,这也是一个问题,
我们现在这么写对吗
在这里插入图片描述
在这里插入图片描述
显然不合理,我们改一下
在这里插入图片描述
在这里插入图片描述
经过测试,很完美,所以其实我们单独也是能搞定都,前提是有哪些基础知识和思路
总而言之就是思路和编码能力缺一不可

下面全部的内容,我们重头开始,这一节看看老师是怎么讲解的,这个新增功能,老师细节方面肯定会考虑得更加全面,值得我们学习

老师的讲解

设置唯一约束

在这里插入图片描述
因为我们要保证每个管理员(其实不止是管理员所有的用户都应该账号唯一)用户的账号唯一
所以我们最保险的方式是数据库里面设置唯一约束
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
复制
在这里插入图片描述
然后执行
其实也可以不这么弄,直接用powerDesiger也可以
下面我们试试
https://blog.csdn.net/yh88356656/article/details/52181113/

在这里插入图片描述
在这里插入图片描述

alter table t_admin
   add unique AK_Key_2 (login_acct);

在这里插入图片描述
这个很简单,我们把数据里面已经重复的账号删掉
如果是navicate里面就这样添加约束
在这里插入图片描述

怎么得知原数据里面有没有重复的账号

两种办法,一种是
SELECT count(login_acct),login_acct FROM t_admingroup by login_acct
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
否则会报错
在这里插入图片描述
在这里插入图片描述
其它的老师讲的跟我们自己摸索写的是一致的
我们这里不赘述了,几乎是一模一样的
我们就记录一下注意点就行了
在这里插入图片描述
在这里插入图片描述

12–管理员维护-新增-执行保存——巨简洁写法

这种写法就比我之前的写法简洁一万倍
在这里插入图片描述

在这里插入图片描述
新增的时候成功了或者失败了能够给出提示最好

执行保存之前密码要MD5加密

这个倒是我漏掉的,确实要执行MD5加密,这是必须要做的
在这里插入图片描述

生成创建时间

在这里插入图片描述

新增完成之后,怎么让用户第一时间看到

要么是进行一下倒叙 排序
在这里插入图片描述
要么是直接显示最后一页,我们更推荐这种写法,用户体验最好,也不用改sql语句了

注意,这里不要带关键词参数,就带一个最大页码参数就行了,
因为假设你原来的搜索关键词是王,后来你新增的没有王,
那么这个时候就出问题了,页面显示不出你新增的最新的数据

13-管理员维护-新增-处理唯一约束异常

在这里插入图片描述
我们在数据库设置了账号的唯一性约束之后,此时如果新增一个已经存在的账号就会报这个错
但是我们觉得这这样有点吓人了
能不能更友好一些?
应该给个提示,说你账号重复了
在这里插入图片描述
这里选哪个呢,实际上导入的包应该是哪个呢
在这里插入图片描述
注意,日志,导入的是slf4j,假如导错了,直接是用不了的
在这里插入图片描述
在这里插入图片描述
注意:info的打印级别实际上是高于debug的
这样会有什么问题呢?
不会报异常了,异常发生了但是被掩盖住了 ,程序不会崩了,我们可以看日志,看出问题所在=
在这里插入图片描述
在这里插入图片描述
所以我们得复制一下这个类,,处理一下这个类的异常

异常类处理

输入快捷键 Ctrl+shift+R 如下 找到CrowdExceptionResolver.java这个类
在这里插入图片描述
在这里插入图片描述
上面这个方法写了,还要定位一个自定义类,所以我们先把这个类新建出来
再由于
我们可能违反唯一约束的也不一定每次都是账号重复了
我们如果每次都告诉客户是你的账号重复了,恐怕不太好
怎么才能更详细的更具体,更准确的描述这个问题呢
只有在保存admin的时候,出现了这个异常才是账号重复
所以我们单独新建一个自定义异常来处理这个问题,的名字可以这样写
在这里插入图片描述
在这里插入图片描述
下面的图片写错了一点点,不是说完全根据智能提示,准确的说的利用智能提示去完成对父类的重写
在这里插入图片描述
自动生成父类的一些构造器和方法,就可以直接用了
在这里插入图片描述
在这里插入图片描述
加好备注
在这里插入图片描述
在这里插入图片描述
注意类名这些要复制,手写很容易错

注意更新的时候也有可能有这个账号重复的问题,所以到时候更新的时候我们也可以抛出这个异常
下面这里的对应关系不要搞错
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

然后测试跑一下就行了
而这个时候,这个前端的域对象,也能够正常报出异常信息了
在这里插入图片描述
出现这个就说明成功了

14-管理员维护-更新-目标和思路(下一篇)

15-管理员维护-更新-前往更新的表单页面
16-管理员维护-更新-执行更新
17-管理员维护-更新-小结
18-RBAC模型-概述
19-RBAC模型-多对多在数据库的表示
20-RBAC模型-RBAC0~3
21-RBAC模型-RBAC模型的数据库表示
22-Ajax工作模式探讨-异步
23-Ajax工作模式探讨-同步
24-Ajax工作模型探讨-总结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值