项目一众筹网03_3_管理员维护_新增_保证每个用户的账号唯一_唯一约束_怎么得知原数据里面有没有重复的_MD5加密_生成创建时间_异常类处理
标签: 项目一众筹网03_3_管理员维护_新增_保证每个用户的账号唯一_唯一约束_怎么得知原数据里面有没有重复的_MD5加密_生成创建时间_异常类处理 MySQL博客 51CTO博客
2023-04-01 18:23:42 107浏览
系列文章目录
文章目录
- 系列文章目录
- 前言
- 10-管理员维护-新增-目标和思路
- 11-管理员维护-新增-前往表单页面
- ==自己先探索一下==
- ==老师的讲解==
- 设置唯一约束
- ==怎么得知原数据里面有没有重复的账号==
- 12--管理员维护-新增-执行保存——巨简洁写法
- 执行保存之前密码要MD5加密
- 生成创建时间
- 新增完成之后,怎么让用户第一时间看到
- 13-管理员维护-新增-处理唯一约束异常
- 异常类处理
- 14-管理员维护-更新-目标和思路(下一篇)
前言
上一篇笔记里面
1、我们删除的时候其实还应该做删除确认,但是目前没做,这个要记一下
2、还有就是自己不能删除自己,如果管理员登录后在管理员管理里面自己删除了自己,这就尴尬了
细节是很多的,甚至可以说是永无止境,暂时可以不管,后面再慢慢优化
注意一定是拿到session后对比id而不是对比名字
3、还有细节,就是管理员删除不要做物理删除,我们做逻辑删除
生产环境下,绝大多数情况我们都是逻辑删除,而不是真的删除,因为数据真的删了就找不回来了
细节,可以说是永无止境,后面慢慢再优化,只要我们会这个技术了,了解清楚项目结构了,后面只是时间问题
10-管理员维护-新增-目标和思路
首先要确定一个,我们点击新增按钮的时候,需不需要带数据,也就是带参数过来
实际上是不需要的
添加的时候,我们在数据库里面做了账号唯一约束的话
java代码里面做不做检查账号是否重复都可以
java代码里面要是也做了唯一性检查的话,就是双重保护,更加保险
还有一个需要考虑的地方就是新增的时候,用户的密码,用户输入的是明文,但是我们保存到数据库的时候,应该就是秘文了
11-管理员维护-新增-前往表单页面
自己先探索一下
去找前端页面
我们都可以做一个
我们这里就做一个在新建的时候就需要用户设置密码的吧
我们新加一个密码输入框就行了,也不难
简单做一下
直接这么跳转行吗
改成a标签这个是没有任何问题的
但是这个跳转应该也要改一下,因为这样的话,是直接访问不了的,能直接访问的只有webapp下的页面
因为除了webapp下的jsp等资源是可以直接访问的,其它的都被保护起来了,可以这么理解
所以我们需要后台帮我们,要么就是写一个控制器跳转,要么就是写一个view-controller,这样就少写一个控制器
但是单纯页面跳转,没有参数的我们都可以用view-controller来实现
跳转就成了
下面把新增页面完善即可,跟以前一样,把前端代码我们需要的部分拷贝过来,该改的地方改一改,这里就不再赘述了
复制一下代码粘贴进去即可
然后就可以写后台代码了,后台代码很简单,暂时我们先随便写一些,在里就真的不赘述了
后台逆向工程基本都帮我们写好了,没啥好说的,直接三层那样简单的用就行
代码写好之后,测试一下看看
需要注意,前端链接的时候不能加参数了,因为我们的参数是动态用户输入的
后端直接获取前端的name属性就可以获取到了
另外需要注意的是,我们获取name属性,在后台是怎么去获取的,这个要非常清晰
否则根本就没入门
用什么注解,什么注解都行吗,显然不是
新增成功之后返回去哪里,这也是一个问题,
我们现在这么写对吗
显然不合理,我们改一下
经过测试,很完美,所以其实我们单独也是能搞定都,前提是有哪些基础知识和思路
总而言之就是思路和编码能力缺一不可
下面全部的内容,我们重头开始,这一节看看老师是怎么讲解的,这个新增功能,老师细节方面肯定会考虑得更加全面,值得我们学习
老师的讲解
设置唯一约束
因为我们要保证每个管理员(其实不止是管理员所有的用户都应该账号唯一)用户的账号唯一
所以我们最保险的方式是数据库里面设置唯一约束
复制
然后执行
其实也可以不这么弄,直接用powerDesiger也可以
下面我们试试
alter table t_admin
add unique AK_Key_2 (login_acct);
这个很简单,我们把数据里面已经重复的账号删掉
如果是navicate里面就这样添加约束
怎么得知原数据里面有没有重复的账号
两种办法,一种是
SELECT count(login_acct),login_acct FROM t_admin
group 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工作模型探讨-总结
好博客就要一起分享哦!分享海报
此处可发布评论
评论(0)展开评论
展开评论