范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

SpringBoot监听器的使用方法

  前言
  监听器(Listener)就是监听对象的创建、销毁等状态的变化以及定义一些事件发生后接下来要进行的动作。主要监听的三个域对象为:ServletRequest域、HttpSession域 和ServletContext域。 本文通过几个简单的例子介绍一下监听器的用法。ServletContextListener监听 Servlet上下文
  监听 Servlet 上下文对象可以在系统启动的时候初始化一些数据,方便在使用的时候直接调用。监听器实现代码如下: @Component public class MyServletContextListener implements ServletContextListener {     @Override    //在 ServletContext 对象创建之后马上调用,做初始化     public void contextInitialized(ServletContextEvent event) {         event.getServletContext().setAttribute("name","九天银河聊编程");         System.out.println("ServletContext 对象被创建了");     }     @Override  // 在 ServletContext 对象销毁之后调用     public void contextDestroyed(ServletContextEvent event) {         System.out.println("ServletContext 对象被销毁了");     } }    @GetMapping("/getServletContext")     public String getServletContext(HttpServletRequest request) {         ServletContext servletContext = request.getServletContext();         Object name = servletContext.getAttribute("name");         return String.valueOf(name);     }
  执行效果如下:
  HttpSessionListener获取在线用户数量@Component public class MyHttpSessionListener implements HttpSessionListener {     public static Integer count = 0;     @Override     public void sessionCreated(HttpSessionEvent event) {         count++;         ServletContext application = event.getSession().getServletContext();         application.setAttribute("UserCount", count);         System.out.println("有人上线了,现在在线人数为:" + count + "人");     }     @Override     public void sessionDestroyed(HttpSessionEvent event) {         count--;         ServletContext application = event.getSession().getServletContext();         application.setAttribute("UserCount", count);         System.out.println("有人下线了,现在在线人数为:" + count + "人");     } }@GetMapping("/online") public String getOnlinePersoncount(HttpServletRequest request) {     Integer userCount = (Integer) request.getServletContext().getAttribute("UserCount");     return (userCount == null ? "0" : userCount + ""); } @GetMapping("/login") public String logined(HttpSession session) {     //相同的session,如果sessionid一致,只会被监听一次。     session.setAttribute("username", "九天银河聊编程");     return "success"; } @GetMapping("/logout") public String logout(HttpSession session) {     session.invalidate();//将session设置为失效     return "success"; }
  执行 127.0.0.1:8090/login,控制台显示:
  执行 127.0.0.1:8090/online,返回
  执行 127.0.0.1:8090/logout,控制台显示
  ServletRequestListener统计网站访问次数@Component public class MyServletRequestListener implements ServletRequestListener {     @Override     public void requestInitialized(ServletRequestEvent servletRequestEvent) {         Object countObject = servletRequestEvent.getServletContext().getAttribute("count");         System.out.println("历史访问次数:" + countObject);         Integer count = 0;         if (countObject != null)             count = Integer.valueOf(countObject.toString());         count++;         servletRequestEvent.getServletContext().setAttribute("count", count);     }      @Override     public void requestDestroyed(ServletRequestEvent servletRequestEvent) {         System.out.println("当前访问次数:" + servletRequestEvent.getServletContext().getAttribute("count"));     } }
  随便执行一个接口请求,控制台打印如下:
  再次执行:
  自定义监听方式
  定义监听事件ublic class ListenerEvent extends ApplicationEvent {     String name = null;      public String getName() {         return name;     }      public void setName(String name) {         this.name = name;     }      public ListenerEvent(Object source, String value) {         super(source);         name = value;     } }
  定义监听器@Component public class MySpringBootListener implements ApplicationListener {      @Override     public void onApplicationEvent(ListenerEvent listenerEvent) {         String eventInfo = listenerEvent.getName();         System.out.println(eventInfo);     } }
  发布事件@RestController public class ListenerController {     @Resource     private ApplicationContext applicationContext;     @GetMapping("/listener")     public String listener() {         ListenerEvent event =new ListenerEvent(this,"九天银河聊编程");         applicationContext.publishEvent(event);         return "";     } }
  执行 127.0.0.1:8090/listener,控制台显示
  监听器说明
  在目前的Servlet API中提供的web事件监听器接口有以下几个:ServletContextListener -- 监听servletContext对象的创建以及销毁     contextInitialized(ServletContextEvent event) -- 创建时执行     contextDestroyed(ServletContextEvent event) -- 销毁时执行  HttpSessionListener -- 监听session对象的创建以及销毁     sessionCreated(HttpSessionEvent event) -- 创建时执行     sessionDestroyed(HttpSessionEvent event) -- 销毁时执行  ServletRequestListener -- 监听request对象的创建以及销毁     requestInitialized(ServletRequestEvent event) -- 创建时执行     requestDestroyed(ServletRequestEvent event) -- 销毁时执行  ServletContextAttributeListener -- 监听servletContext对象中属性的改变     attributeAdded(ServletContextAttributeEvent event) -- 添加属性时执行     attributeReplaced(ServletContextAttributeEvent event) -- 修改属性时执行     attributeRemoved(ServletContextAttributeEvent event) -- 删除属性时执行  HttpSessionAttributeListener --监听session对象中属性的改变     attributeAdded(HttpSessionBindingEvent event) -- 添加属性时执行     attributeReplaced(HttpSessionBindingEvent event) -- 修改属性时执行     attributeRemoved(HttpSessionBindingEvent event) -- 删除属性时执行  ServletRequestAttributeListener --监听request对象中属性的改变     attributeAdded(ServletRequestAttributeEvent event) -- 添加属性时执行     attributeReplaced(ServletRequestAttributeEvent event) -- 修改属性时执行     attributeRemoved(ServletRequestAttributeEvent event) -- 删除属性时执行生命周期
  request
  指一个URL请求,当发送一个请求时被创建,当一个响应返回时,即被销毁。
  session
  当一个客户端访问一个WEB应用时创建,标记一个用户与服务器之间的多次请求。session失效有以下几个情况: session 过期,即用户长时间不访问服务器造成过期  用户退出系统,即执行session 的 invalidate 方法,清理session  当前 web 应用被卸载(session 未被持久化)
  application
  贯穿于当前的 WEB 应用的生命周期,当前 WEB 应用被加载时创建 application 对象,当前 WEB 应用被卸载时销毁 application 对象。
  每天一个小知识,每天进步一点点!!![加油][加油][加油]

整容变毁容,面容僵硬成蜡像,这些男星咋就想不开要去动脸呢说到TVB一众男星中,能在奸角和好人之间切换自如的演技派,少不了郭晋安的名字。生于1964年10月9日的他,如今迎来了57岁的生日时光飞逝,昔日的奶油小生也成中年大伯了。但郭晋安似快乐大本营将停播?刚刚,湖南卫视回应这两天老牌综艺节目快乐大本营被传停播10月9日下午湖南卫视官方微博回应称周六晚黄金档快乐大本营将升级改版更新换代回应全文如下据媒体此前报道,9日晚820,湖南卫视原本应该播出快乐大三将缺战!广东锋线遭重创,易建联接班人赛季报销,杜锋紧急调整距离CBA联赛正式开战只有五天时间,近期很多球队都已经赶到了诸暨,以备提前进行热身赛工作。广东队也计划在12日前往诸暨,今年完全没有季前赛的比赛任务,所以只需要等到16日正常开赛即辽篮今日出征新赛季杨帅明确首阶段目标北京时间10月10日,辽宁男篮将启程前往浙江诸暨,正式踏上了CBA联赛新赛季的征程!乘着刚刚斩获全运会冠军的东风,辽篮渴望在新赛季的联赛中也能够再有斩获,不过主帅杨鸣在谈到新赛季目马布里爱将赛季报销,或就此退役,周琦条款辽宁被耍,杨鸣失望最近这两个赛季,CBA球员遭遇伤病的情况也越来越多,比如在休赛期辽宁就遭遇了大量的伤病,其实其他队伍也遭遇了很大的伤病,北控的锋线核心李根也是遭遇了严重的伤病,已经赛季报销,在CB18岁入北大,21岁进央视,26岁上春晚,才女李思思有点狠对于娱乐圈来说,主持往往是一门艺术。不同的主持人带来的主持效果自然也有所不同。良好的主持人,他们通常会以主持的方式,向世界传递着各种不同的信息。例如主持春晚。作为每年仅有一次的春晚温柔走心的状态文案这吹不出褶的平静日子,也在闪光。1。今年的遗憾,来年一定会实现的。2。放心去做吧,整个宇宙都会帮你的。3。给所有坏情绪都贴上一个都会过去的标签4。谁都会犯错误,所以人们才会在铅笔的项汉拍戏时救过六小龄童性命,杨洁让他的肚皮替蜘蛛精吐丝项汉,中国少有的集演戏武打设计编舞独唱于一体的全能型演员。拍摄86版西游记时,当年杨洁导演从湖南湘剧院请的两个戏曲演员中,一个是观音左大玢,另一个就是项汉。身为全能型演员的项汉,在别担心,有我在呢近日,贵州贵阳一位网友拍下这样一幕妈妈躺在病床上手抖女儿站在床边小手紧紧握住妈妈的手这个瞬间感动了不少网友看完眼眶湿了自己在候诊过程中意外看到这一幕当时,一位母亲躺在病床上可能是因伊能静和万茜机场偶遇,伊能静穿衣太减龄,真看不出俩人相差14岁年龄对于女性来说始终都是比较敏感的存在。四十岁就已经是门槛了,更何况到了可以被称为奶奶辈的五十岁,这个时候再来谈减龄宛如天方夜谭,需要大家慎之又慎,否则减龄不成还会产生明显的违和感高龄戏骨李雪健原来就算ampampquot最贵影帝ampampquot,也会被医药费压得喘不过气2016年时,芒果台举办金鹰电视颁奖典礼,颁发最具人气的男演员奖。候选人的名单里,有胡歌,还有李雪健。奖项需要网友票选,最终花落胡歌。胡歌站起来朝着观众席鞠了一躬,又走到隔座的李雪
他们是央视主持人,搭档19年,结婚12年,如今儿女双全很幸福很多90后00后在小时候应该都看过智慧树这个儿童节目吧?这档节目从2003年开始播出,是很多人的童年回忆了!看过这个节目的网友,应该都知道里面有包括红果果(陈苏)绿泡泡(耿晨晨)在浪姐3第2期争议不断,那英闲到打麻将,王心凌被网友狂刷弹幕浪姐3王心凌镜头增多,网友刷弹幕影响路人缘,帮她还是害她引言。5月27日,浪姐3第2期如期上线,相信很多网友的关注点都在,如何分组?王心凌的镜头多了没?第2期的内容没有第1期精彩,十渡回北京有检查站吗?房山十渡进北京会经过检查站吗?房山九渡山庄告诉你,从十渡返回北京不在经过检查站很多朋友关注,想来十渡游玩,却又担心回京会经过检查站造成堵车,房易路长沟检查站京昆高速韩村河检查站由于是河北及房山人进京的必经之道,辽篮赌对了!李洪庆受访谈夺冠,北京康复师福建分析师回不去了辽篮再次夺得CBA总冠军后,辽宁各个球员的表现和球队的运作成为球迷关注的焦点。近日,辽宁男篮总经理李洪庆在接受新华社专访时,谈到了辽篮夺冠的原因,他认为老将发挥出基石作用锋线的补强CBA3消息首钢确认新老总,王晗被无情下课,马布里继续担任教练最近一段时间,北京首钢被推在了风口浪尖上,很多关于北京首钢的消息铺天盖地而来,不续约刘晓宇,常林离开几乎也是已成定局,而作为首钢的董事长兼首钢篮球负责人的秦晓雯也是再次被球迷推向了中国女排前队长朱婷传来最新消息,蔡彬很为难,球迷表示不理解中国女排前队长朱婷传来最新消息,蔡彬很为难,球迷表示不理解!哈喽大家好,欢迎收看本期内容,记得点赞关注,谢谢大家,这期内容我们来聊一聊朱婷回归的女排的这个话题。自东京奥运会惨败之后因身体原因暂别国家队,球迷就算他能上场也没多大的作用知名篮球媒体人宋翔透露,此前入选了中国男篮集训队的浙江队后卫吴前,因为身体原因不得不暂时离开国家队。这个时候很多球迷才明白,为什么在已经有了郭艾伦赵睿赵继伟胡明轩徐杰孙铭徽吴前7名宝刀未老!CBA第一大外遭哄抢37岁场均准三双与阿联并称玄冥二老在眼下的CBA联赛当中,外援的水平和能力将直接决定球队的最后成绩,所以每年休赛期对于成绩不如意的球队来说,率先研究的就是外援的续约工作。像青岛和新疆都已经率先签下了小外援,而上赛季68岁的德拉甘,如今已成德老板自2019年夏天卸任昆山FC主教练一职后,曾执教过天津队的德拉甘便一直处于赋闲的状态。如今,已经68岁的他在塞尔维亚首都贝尔格莱德经营着一家餐厅,过着平静且闲适的生活,不过他依然期中国联赛外援07南非的马克南非足球的传奇绰号巴法纳男孩(BafanaBafana)的南非队,在1996年本土举办的非洲国家杯中,与突尼斯队会师决赛争夺冠军。南非队替补出场的当时在英甲(现在的英冠)狼队效力的世界田联认证切阳什姐伦敦奥运会竞走金牌当地时间5月28日,中国竞走名将切阳什姐参加202122赛季世界田联竞走巡回赛西班牙拉科鲁尼亚站的比赛。在世界田联的官网上,切阳什姐的简介中已标注有奥运会金牌获得者,这说明世界田联