后台管理员生成策略

简介: 在Spring中的监听器必须实现一个接口ApplicationListener,就可以作为spring的监听类,来监听spring中特殊的事件ApplicationListener<E> E为要监听的事件类型所有在在Spring中的事件(不管是spring自身的事件还是其他事件,都是ApplicationEvent的子类)类型称为applicationEvent

后台管理员生成策略


问题:至少给出两种方案,第一个管理员从哪里来?


1、系统启动的时候,检查数据库,如果没有超级管理员用户则自动创建一个账户


(即ServletContextListener启动时,系统则已启动),它启动在前还是应用启动在前?ServletContextListener启动在前(没办法使用Spring)


2、提供一个toLogin方法,判断如果没有超级管理员,返回一个超级管理员注册页面,在进入后台管理登录页面之前,先执行login.do(页面也是从后台生成的,将login.html隐藏于WEB-INF中,通过login.do访问)

如果已经有,则跳转超级管理员登录页面


3、第一次启动应用时,会有登录界面,然后再后台写一个Controller(init.do),该方法在没有任何方法查找到连接,相当于其是一个隐藏的路径


只有程序员知道(留后门),返回的是一些系统的初始页面,完成超级管理员注册,如果系统已经初始化完成(即启动完系统,已经初始化系统,然后跳转登录界面)


再访问init.do时就无法访问


4、在Spring启动时,检查数据库,如果没有超级管理员就创建一个默认的,在ServletContextListener中使用JDBC来完成(几乎和第一种方式一样)--监听的是spring的启动


Spring事件机制(在spring中也有类似于Tomcat的事件)ServletContextListener监听的是tomcat的事件,提供两个方法来处理容器的启动以及销毁。


               同理,在spring中也会有相关的事件(也可以在spring中添加一些监听器 来完成监听spring的监听事件)要使用spring的监听机制很简单,在后台创建一个新包(listener)--仅作为分包来用(监听器不是必须放在特定的包中)


               在Spring中的监听器必须实现一个接口ApplicationListener,就可以作为spring的监听类,来监听spring中特殊的事件ApplicationListener  E为要监听的事件类型


           所有在在Spring中的事件(不管是spring自身的事件还是其他事件,都是ApplicationEvent的子类)类型称为applicationEvent


               相当于在spring中,ApplicationEvent这个类相当于所有的事件(在spring中所有的类不止这个容器启动一种,在spring中可以自己定义事件,tomcat中无法自定义)


               这个时候,如果E为ApplicationEvent,相当于该监听器要监听所有的的事件(消息)


               规定实现一个默认方法:onApplicationEvent(ApplicationEvent event)(表示监听到指定的事件之后要做的操作)

此时,event作为对象传入,即这次监听到的事件


               由于此时我们要监听的是初始化管理员的监听器,还写ApplicationEvent就代表Spring中所有的事件都会被监听到并响应,无法得到自定义的拦截器在什么时候运行


               现在我们只想监听Spring容器启动完成的事件,所以使用另外一种监听器(ContextRefreshedEvent-上下文容器刷新的事件)  容器刷新就是容器启动了,它是spring事件的子事件


测试:

@Autowired
private ILoginInfoService logininfoService;
@Override
public void onApplicationEvent(ContextRefreshedEvent event) {
System.out.println("spring启动好了"+this.logininfoService);
}


如果spring容器启动完成,则可以得到该对象


还需要配置告诉spring,@Component(代表这是一个组件)


如果写在公共模块上,会出问题(该公共模块前后台都需要使用,但该监听器只需要后台使用)


现在就可以完成第一个管理员的初始化动作了

目录
相关文章
|
6月前
|
前端开发 安全 数据安全/隐私保护
管理系统的按钮权限控制
【2月更文挑战第11天】
98 0
|
4月前
|
监控 数据安全/隐私保护
若依修改---功能详解--权限控制,demo超级管理员,可以查看所有功能菜单,zhangsan,登录之后,仅可以查看线索的菜单,不同角色岗位,登录查看的内容不同,若依通过用户管理,角色管理,菜单管理控
若依修改---功能详解--权限控制,demo超级管理员,可以查看所有功能菜单,zhangsan,登录之后,仅可以查看线索的菜单,不同角色岗位,登录查看的内容不同,若依通过用户管理,角色管理,菜单管理控
|
6月前
|
JavaScript Java 数据库
考勤|基于Springboot的大学生考勤系统设计与实现(源码+数据库+文档)
考勤|基于Springboot的大学生考勤系统设计与实现(源码+数据库+文档)
119 0
JavaWeb用户信息管理系统-用户只能在一处登录
JavaWeb用户信息管理系统-用户只能在一处登录
47 0
JavaWeb用户信息管理系统-用户查询的实现
JavaWeb用户信息管理系统-用户查询的实现
79 0
|
缓存 前端开发 数据安全/隐私保护
【学生管理系统】权限管理之角色管理
【学生管理系统】权限管理之角色管理
130 0
【学生管理系统】权限管理之角色管理
|
BI 开发者
员工管理的表单搭建|学习笔记
快速学习员工管理的表单搭建
155 0
员工管理的表单搭建|学习笔记
|
监控 前端开发 JavaScript
|
SQL JSON 前端开发
|
数据可视化 前端开发 Java
servlet+mysql实现的学生评教系统(角色:学生、教师、管理员 功能:评教、修改密码、评教规则管理、评教结果查看、学生管理、教师管理、班级管理、学生信息、评教结果可视化展示等)
servlet+mysql实现的学生评教系统(角色:学生、教师、管理员 功能:评教、修改密码、评教规则管理、评教结果查看、学生管理、教师管理、班级管理、学生信息、评教结果可视化展示等)
servlet+mysql实现的学生评教系统(角色:学生、教师、管理员 功能:评教、修改密码、评教规则管理、评教结果查看、学生管理、教师管理、班级管理、学生信息、评教结果可视化展示等)