后台管理员生成策略

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


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


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

目录
相关文章
|
12月前
|
存储 前端开发 PHP
构建一个简单的网站,包括用户注册、登录功能
构建一个简单的网站,包括用户注册、登录功能
217 1
JavaWeb用户信息管理系统-用户只能在一处登录
JavaWeb用户信息管理系统-用户只能在一处登录
44 0
JavaWeb用户信息管理系统-用户查询的实现
JavaWeb用户信息管理系统-用户查询的实现
67 0
|
SQL 缓存 前端开发
用户登录【项目 商城】
用户登录【项目 商城】
130 0
|
存储 缓存
若依项目如何实现一个账户只能一个人登录(汇总)
若依项目如何实现一个账户只能一个人登录(汇总)
1035 0
|
存储 JSON 前端开发
基于Springboot外卖系统04:后台系统用户登录+登出功能
如果前端与后台接口之间不存在跨域问题,那么推荐使用cookie和session来记录登录状态。如果前端与服务器接口之间存在跨域问题,那么就要使用token的方式来维持登录状态。
223 0
|
前端开发 Java 关系型数据库
基于springboot的会员后台管理系统
基于springboot的会员后台管理系统
449 0
基于springboot的会员后台管理系统
|
Java 关系型数据库 MySQL
点餐项目后台管理系统
总体而言,在这个过程中,我体验到了服务器的神奇,也学习到了许多相关的知识,也希望在接下去的时间中继续进行相关的知识学习。
点餐项目后台管理系统
|
Java 关系型数据库 MySQL
SSM框架(spring+springmvc+mabatis)+Mysql实现的车辆理赔系统(角色分为普通用户、勘察员、管理员,包含普通用户维护个人车辆保险、申请理赔、勘察员勘察、管理员管等)
SSM框架(spring+springmvc+mabatis)+Mysql实现的车辆理赔系统(角色分为普通用户、勘察员、管理员,包含普通用户维护个人车辆保险、申请理赔、勘察员勘察、管理员管等)
SSM框架(spring+springmvc+mabatis)+Mysql实现的车辆理赔系统(角色分为普通用户、勘察员、管理员,包含普通用户维护个人车辆保险、申请理赔、勘察员勘察、管理员管等)