后台管理员生成策略

简介: 在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(代表这是一个组件)


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


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

目录
相关文章
JavaWeb用户信息管理系统-修改用户操作的实现
JavaWeb用户信息管理系统-修改用户操作的实现
101 0
|
3月前
|
Java 应用服务中间件 数据库连接
ssm项目整合,简单的用户管理系统
文章介绍了一个使用SSM框架(Spring、SpringMVC、MyBatis)构建的简单用户管理系统的整合过程,包括项目搭建、数据库配置、各层代码实现以及视图展示。
ssm项目整合,简单的用户管理系统
|
5月前
|
监控 数据安全/隐私保护
若依修改---功能详解--权限控制,demo超级管理员,可以查看所有功能菜单,zhangsan,登录之后,仅可以查看线索的菜单,不同角色岗位,登录查看的内容不同,若依通过用户管理,角色管理,菜单管理控
若依修改---功能详解--权限控制,demo超级管理员,可以查看所有功能菜单,zhangsan,登录之后,仅可以查看线索的菜单,不同角色岗位,登录查看的内容不同,若依通过用户管理,角色管理,菜单管理控
JavaWeb用户信息管理系统-用户只能在一处登录
JavaWeb用户信息管理系统-用户只能在一处登录
49 0
|
SQL 前端开发
TienChin 渠道管理-权限分配
TienChin 渠道管理-权限分配
60 0
JavaWeb用户信息管理系统-用户查询的实现
JavaWeb用户信息管理系统-用户查询的实现
85 0
|
JSON 前端开发 JavaScript
基于Springboot外卖系统09:员工信息编辑+员工信息保存
那么从上述的分析中,当前实现的编辑功能需要实现两个方法:
139 0
|
数据库 数据安全/隐私保护
【学生管理系统】权限管理之用户管理(一)
【学生管理系统】权限管理之用户管理
162 0
【学生管理系统】权限管理之用户管理(一)
|
前端开发 数据库 数据安全/隐私保护
【学生管理系统】权限管理之用户管理(二)
【学生管理系统】权限管理之用户管理
72 0
【学生管理系统】权限管理之用户管理(二)
|
缓存 前端开发 数据安全/隐私保护
【学生管理系统】权限管理之角色管理
【学生管理系统】权限管理之角色管理
147 0
【学生管理系统】权限管理之角色管理