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

时间:2021-08-07 01:17:34


系列文章目录

文章目录

  • 系列文章目录
  • 前言
  • 10-管理员维护-新增-目标和思路
  • 11-管理员维护-新增-前往表单页面
  • ==自己先探索一下==
  • ==老师的讲解==
  • 设置唯一约束
  • ==怎么得知原数据里面有没有重复的账号==
  • 12--管理员维护-新增-执行保存——巨简洁写法
  • 执行保存之前密码要MD5加密
  • 生成创建时间
  • 新增完成之后,怎么让用户第一时间看到
  • 13-管理员维护-新增-处理唯一约束异常
  • 异常类处理
  • 14-管理员维护-更新-目标和思路(下一篇)

前言

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

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

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

首先要确定一个,我们点击新增按钮的时候,需不需要带数据,也就是带参数过来

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


实际上是不需要的

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


添加的时候,我们在数据库里面做了账号唯一约束的话

java代码里面做不做检查账号是否重复都可以

java代码里面要是也做了唯一性检查的话,就是双重保护,更加保险

还有一个需要考虑的地方就是新增的时候,用户的密码,用户输入的是明文,但是我们保存到数据库的时候,应该就是秘文了

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

自己先探索一下

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


去找前端页面

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


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


我们都可以做一个

我们这里就做一个在新建的时候就需要用户设置密码的吧

我们新加一个密码输入框就行了,也不难

简单做一下

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


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

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


直接这么跳转行吗

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


改成a标签这个是没有任何问题的

但是这个跳转应该也要改一下,因为这样的话,是直接访问不了的,能直接访问的只有webapp下的页面

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

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


因为除了webapp下的jsp等资源是可以直接访问的,其它的都被保护起来了,可以这么理解

所以我们需要后台帮我们,要么就是写一个控制器跳转,要么就是写一个view-controller,这样就少写一个控制器

但是单纯页面跳转,没有参数的我们都可以用view-controller来实现

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


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


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

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


跳转就成了

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

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


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

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


复制一下代码粘贴进去即可

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


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


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


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


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


然后就可以写后台代码了,后台代码很简单,暂时我们先随便写一些,在里就真的不赘述了

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


后台逆向工程基本都帮我们写好了,没啥好说的,直接三层那样简单的用就行

代码写好之后,测试一下看看

需要注意,前端链接的时候不能加参数了,因为我们的参数是动态用户输入的

后端直接获取前端的name属性就可以获取到了

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


另外需要注意的是,我们获取name属性,在后台是怎么去获取的,这个要非常清晰

否则根本就没入门

用什么注解,什么注解都行吗,显然不是

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


新增成功之后返回去哪里,这也是一个问题,

我们现在这么写对吗

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


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


显然不合理,我们改一下

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


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


经过测试,很完美,所以其实我们单独也是能搞定都,前提是有哪些基础知识和思路

总而言之就是思路和编码能力缺一不可

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

老师的讲解

设置唯一约束

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


因为我们要保证每个管理员(其实不止是管理员所有的用户都应该账号唯一)用户的账号唯一

所以我们最保险的方式是数据库里面设置唯一约束

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

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


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


复制

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


然后执行

其实也可以不这么弄,直接用powerDesiger也可以

下面我们试试


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


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

alter table t_admin
   add unique AK_Key_2 (login_acct);

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


这个很简单,我们把数据里面已经重复的账号删掉

如果是navicate里面就这样添加约束

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

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

两种办法,一种是

SELECT count(login_acct),login_acct FROM t_admingroup by login_acct

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


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


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


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


否则会报错

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


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


其它的老师讲的跟我们自己摸索写的是一致的

我们这里不赘述了,几乎是一模一样的

我们就记录一下注意点就行了

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


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

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

这种写法就比我之前的写法简洁一万倍

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

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


新增的时候成功了或者失败了能够给出提示最好

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

这个倒是我漏掉的,确实要执行MD5加密,这是必须要做的

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

生成创建时间

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

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

要么是进行一下倒叙 排序

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


要么是直接显示最后一页,我们更推荐这种写法,用户体验最好,也不用改sql语句了

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


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

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

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


我们在数据库设置了账号的唯一性约束之后,此时如果新增一个已经存在的账号就会报这个错

但是我们觉得这这样有点吓人了

能不能更友好一些?

应该给个提示,说你账号重复了

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


这里选哪个呢,实际上导入的包应该是哪个呢

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


注意,日志,导入的是slf4j,假如导错了,直接是用不了的

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


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


注意:info的打印级别实际上是高于debug的

这样会有什么问题呢?

不会报异常了,异常发生了但是被掩盖住了 ,程序不会崩了,我们可以看日志,看出问题所在=

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


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


所以我们得复制一下这个类,,处理一下这个类的异常

异常类处理

输入快捷键 Ctrl+shift+R 如下 找到CrowdExceptionResolver.java这个类

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


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


上面这个方法写了,还要定位一个自定义类,所以我们先把这个类新建出来

再由于

我们可能违反唯一约束的也不一定每次都是账号重复了

我们如果每次都告诉客户是你的账号重复了,恐怕不太好

怎么才能更详细的更具体,更准确的描述这个问题呢

只有在保存admin的时候,出现了这个异常才是账号重复

所以我们单独新建一个自定义异常来处理这个问题,的名字可以这样写

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


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


下面的图片写错了一点点,不是说完全根据智能提示,准确的说的利用智能提示去完成对父类的重写

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


自动生成父类的一些构造器和方法,就可以直接用了

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


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


加好备注

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


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


注意类名这些要复制,手写很容易错注意更新的时候也有可能有这个账号重复的问题,所以到时候更新的时候我们也可以抛出这个异常

下面这里的对应关系不要搞错

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

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


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


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

然后测试跑一下就行了

而这个时候,这个前端的域对象,也能够正常报出异常信息了

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


出现这个就说明成功了

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

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