-
解决myeclipse2014无发新建Filter和listener
2017-05-13 10:41:28解决myeclipse2014无发新建Filter和listener -
MyEclipse中新建一个listener类
2014-04-14 21:47:34必须在web.xml中配置 包名.类名 project才会在执行时,自动执行该listener。必须在web.xml中配置
<listener>
<listener-class>包名.类名</listener-class>
</listener>
project才会在执行时,自动执行该listener。
-
springboot listener使用配置
2017-07-31 10:57:06一 ,springboot使用listener有两种方式一种是通过ServletListenerRegistrationBean代码注册,一种是...新建listener类 选择实现的listener接口 这里选择用ServletContextListener 代码如下 package com.kerry.listen一 ,springboot使用listener有两种方式一种是通过ServletListenerRegistrationBean代码注册,一种是通过注解@WebListener
1 @WebListener方式
需要在主程序Applicaiton上开启 @ServletComponentScan
新建listener类 选择实现的listener接口
这里选择用ServletContextListener 代码如下
package com.kerry.listener; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; import javax.servlet.annotation.WebListener; /** * Application Lifecycle Listener implementation class MyServletContextListener * */ /** * 通过 @WebListener 或者 使用代码注册 ServletListenerRegistrationBean * @author Administrator * */ @WebListener public class MyServletContextListener implements ServletContextListener { @Override public void contextInitialized(ServletContextEvent sce) { System.out.println(sce.getServletContext().getServletContextName()+" init"); } @Override public void contextDestroyed(ServletContextEvent sce) { System.out.println(sce.getServletContext().getServletContextName()+" destroy"); } }
2,通过ServletListenerRegistrationBean代码注册
以HttpSessionListener示例
package com.kerry.listener; import javax.servlet.annotation.WebListener; import javax.servlet.http.HttpSessionEvent; import javax.servlet.http.HttpSessionListener; /** * Application Lifecycle Listener implementation class MyHttpSessionListener * 通过 @WebListener 或者 使用代码注册 ServletListenerRegistrationBean */ public class MyHttpSessionListener implements HttpSessionListener { /** * Default constructor. */ public MyHttpSessionListener() { // TODO Auto-generated constructor stub } /** * @see HttpSessionListener#sessionCreated(HttpSessionEvent) */ public void sessionCreated(HttpSessionEvent se) { System.out.println(se.getSession().getId()+" session create"); } /** * @see HttpSessionListener#sessionDestroyed(HttpSessionEvent) */ public void sessionDestroyed(HttpSessionEvent se) { System.out.println(se.getSession().getId()+" session destroy"); } }
ListenerConfigure类
package com.kerry.configure; import org.springframework.boot.web.servlet.ServletListenerRegistrationBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import com.kerry.listener.MyHttpSessionListener; @Configuration public class ListenerConfigure { @Bean public ServletListenerRegistrationBean<MyHttpSessionListener> serssionListenerBean(){ ServletListenerRegistrationBean<MyHttpSessionListener> sessionListener = new ServletListenerRegistrationBean<MyHttpSessionListener>(new MyHttpSessionListener()); return sessionListener; } // @Bean // public ServletListenerRegistrationBean<MyServletContextListener> servletContextListenerBean(){ // ServletListenerRegistrationBean<MyServletContextListener> // sessionListener = new ServletListenerRegistrationBean<MyServletContextListener>(new MyServletContextListener()); // return sessionListener; // } }
附上项目代码结构:
-
Listener 监听器学习笔记
2020-02-12 20:40:19监听器创建2.1 方法1:新建Listener2.2 方法2:新建class,实现需要的监听器接口,并实现方法。手动添加@WebListener注解3. 常用监听器3.1 第一类:监听 “域对象” 创建 和 销毁3.1.1 ServletContextListener3.1.2 ...文章目录
监听器 Listener
1. 监听器简述
在实际生活着,我们很多商场有摄像头,监视着客户的一举一动。如果客户有违法行为,商场可以采取相应的措施。同样,在我们的java程序中,有时也需要监视某些事情,一旦被监视的对象发生相应的变化,我们应该采取相应的操作。这就需要用到java中的监听器。
web监听器是一种Servlet中的特殊的类,它们能帮助开发者监听web中的特定事件,比如:ServletContext,HttpSession,ServletRequest的创建和销毁等。可以在某些动作前后增加处理,实现监控。2.监听器创建
2.1 方法1:新建Listener
2.2 方法2:新建class,实现需要的监听器接口,并实现方法。手动添加@WebListener注解
3. 常用监听器
3.1 第一类:监听 “域对象” 创建 和 销毁
3.1.1 ServletContextListener
监听ServletContext域对象的创建和销毁:
创建:服务器开启
销毁:服务器关闭@WebListener public class MyServletContextListener implements ServletContextListener { public void contextDestroyed(ServletContextEvent sce) { // contextServlet域对象 销毁 System.out.println("ContextServlet对象销毁了。。。"); } public void contextInitialized(ServletContextEvent sce) { // contextServlet域对象 初始化 System.out.println("ContextServlet对象初始化。。。"); } }
3.1.2 HttpSessionListener
监听HttpSession域对象的创建和销毁
创建:第一次执行req.getSession()
销毁: 执行 session.invalidate();或过期后自动销毁。@WebListener public class MyHttpSessionListener implements HttpSessionListener{ @Override public void sessionCreated(HttpSessionEvent se) { // TODO Auto-generated method stub System.out.println("某个Session对象被创建了。。。"); } @Override public void sessionDestroyed(HttpSessionEvent se) { // TODO Auto-generated method stub System.out.println("某个Session对象销毁了。。。"); } } 测试:servlet代码: HttpSession session = request.getSession(); session.invalidate();
3.1.3 ServletRequestListener
监听HttpServeltRequest的创建和销毁:
创建:请求过来时
销毁:响应结束后@WebListener public class MyRequestListener implements ServletRequestListener { public void requestDestroyed(ServletRequestEvent sre) { System.out.println("request对象被销毁了"); } public void requestInitialized(ServletRequestEvent sre) { System.out.println("request对象被创建了"); } }
3.2 第二类:监听 “域对象属性” 创建、修改、删除
3.2.1 ServletContextAttributeListener
监听ServletContext域对象中的属性变更
@WebListener public class MyServletContextAttributeListener implements ServletContextAttributeListener{ @Override public void attributeAdded(ServletContextAttributeEvent scae) { System.out.println("ServletContext域对象中属性 添加"); } @Override public void attributeRemoved(ServletContextAttributeEvent scae) { System.out.println("ServletContext域对象中属性 删除"); } @Override public void attributeReplaced(ServletContextAttributeEvent scae) { System.out.println("ServletContext域对象中属性 修改"); } } 测试:servlet代码: ServletContext context = req.getServletContext(); context.setAttribute("NAME", "jack");// context添加属性 context.setAttribute("NAME", "tom");// context修改属性 context.removeAttribute("NAME");// context删除属性
3.2.2 HttpSessionAttributeListener
监听HttpSession域对象中的属性变更
@WebListener public class MyHttpSessionAttributeListener implements HttpSessionAttributeListener { public void attributeAdded(HttpSessionBindingEvent se) { System.out.println("HttpSession属性 添加"); } public void attributeRemoved(HttpSessionBindingEvent se) { System.out.println("HttpSession属性 删除"); } public void attributeReplaced(HttpSessionBindingEvent se) { System.out.println("HttpSession属性 修改"); } } 测试:Servlet代码 HttpSession session = req.getSession();// 创建 session.setAttribute("NAME", "jack");// session添加属性 session.setAttribute("NAME", "tom");// session修改属性 session.removeAttribute("NAME");// session删除属性 session.invalidate();//销毁
3.2.3 ServletRequestAttributeListener
监听HttpServletRequest域对象中的属性变更
@WebListener public class MyServletRequestAttributeListener implements ServletRequestAttributeListener { public void attributeRemoved(ServletRequestAttributeEvent srae) { System.out.println("HttpServletRequest域对象属性 -删除"); } public void attributeAdded(ServletRequestAttributeEvent srae) { System.out.println("HttpServletRequest域对象属性 -添加"); } public void attributeReplaced(ServletRequestAttributeEvent srae) { System.out.println("HttpServletRequest域对象属性 -修改"); } } 测试:servlet代码 req.setAttribute("NAME", "jack"); req.setAttribute("NAME", "tom"); req.removeAttribute("NAME");
3.3 第三类:监听session中的特殊javaBean状态的改变
注意:这类监听器:在JavaBean中实现监听器接口,并实现方法。不需要
@WebListener
注解3.3.1 HttpSessionBindingListener
监听Session域对象属性中 JavaBean的绑定和解绑。
- 绑定:将JavaBean对象添加到Session域对象属性中
- 解绑:将绑定JavaBean的域对象属性,修改成非本Bean数据,或删除该属性。
public class Person implements HttpSessionBindingListener{ private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public void valueBound(HttpSessionBindingEvent event) { System.out.println("Person对象被【绑定】到了Session域对象属性中"); } @Override public void valueUnbound(HttpSessionBindingEvent event) { System.out.println("Person对象从Session域对象属性中 【解绑】"); } } 测试:servlet代码 HttpSession session = req.getSession();// 创建 session.setAttribute("Person", new Person());// session添加属性 session.setAttribute("Person", "tom");// session修改属性; 修改和删除都算解绑 session.removeAttribute("Person");// session删除属性 session.invalidate();//销毁
3.3.2 HttpSessionActivationListener
监听Session域中JavaBean的活化和钝化
前提:必须将JavaBean保存到Session域对象属性中。且JavaBean必须实现可序列化接口Serializable
-
钝化:序列化(将内存中的数据保存在硬盘上):将session对象序列化到tomcat/work目录中 的SESSION.ser文件。正常关闭服务器。
-
活化:反序列化(将硬盘上的数据加载到内存中):将SESSION.ser文件反序列化成Session对象。开启服务器,且session没过期
public class Dog implements Serializable,HttpSessionActivationListener{ private String dname; public String getDname() { return dname; } public void setDname(String dname) { this.dname = dname; } @Override public void sessionWillPassivate(HttpSessionEvent se) { System.out.println("Dog对象钝化了:"+getDname()); } public void sessionDidActivate(HttpSessionEvent se) { System.out.println("Dog对象活化了:"+getDname()); } } 测试:servlet代码。然后关闭服务器,再开启,看日志 HttpSession session = req.getSession();// 创建 Dog dog = new Dog(); dog.setDname("小白"); session.setAttribute("dog", dog);
-
idea web项目新建没有Servlet,filter,listener
2019-09-07 09:44:16问题现象: 原因是idea工程没有正确识别web项目下java代码目录 修改: 修改iml文件 修改为你的java代码路径 如果没有就添加一个节点 大概位置问题现象:
原因是idea工程没有正确识别web项目下java代码目录
修改:
修改iml文件修改为你的java代码路径 如果没有就添加一个节点
大概位置
-
IDEA创建maven_web工程后,在包里不能新建Servlet、Filter、Listener文件
2019-07-12 23:02:44问题: IDEA创建maven_web工程后,在包里不能新建Servlet、Filter、Listener文件,如图: 解决办法: 最终结果: -
ApplicationListener
2019-02-21 22:50:37一般来说,一个我们新建一个项目,在启动时就需要初始化一些东西的(比如数据库的数据,一个对象,或者是某些配置)。并且使用ApplicationListener后可以拿到spring容器,功能是异常强大,好用。 二、使用 ... -
idea新建项目或者导入项目出现Failed to notify build listener(识别不了java文件)
2019-03-04 16:43:04出现该问题的根本原因是idea与...Failed to notify build listener 或者 参考:https://blog.csdn.net/Evan_L/article/details/87368075 可知安装的idea与gradle应该匹配的版本号的关系; 比如我本地的ide... -
ERROR: cannot launch node of type [listener/listener]: can't locate node [listener] in package [list
2018-11-07 17:04:54我的调试背景是在接收某个sensor的数据的时候,新建一个listener 的节点 接收, 无论是单独启动listener 还是一起启动两个节点,都会出现 ERROR: cannot launch node of type [listener/listener]: can't locate ... -
springboot集成listener
2020-06-23 07:31:39新建一个listener @Component public class MyListener implements ServletRequestListener { @Override public void requestDestroyed(ServletRequestEvent sre) { System.out.println("MyListener destroy...... -
如何开发Presto Listener
2020-01-09 18:17:42新建2个类,分别实现EventListenerFactory和EventListener 自定义一个Plugin,实现com.facebook.presto.spi.Plugin,重写getEventListenerFactories,返回自定义EventListenerFactory的实例 在resources目录下新建... -
dorado listener属性
2014-07-30 17:40:00每一个控件都有一个listener属性,可以用来定位一个服务定位表达式,通过这个表达式, 它最终可以映射为spring里面一个javaBean的一个java方法 例如设置DynaView1.view.xml里边的按钮button1的...然后新建DynaV... -
Listener监听器详解
2020-08-05 20:01:48ServletContextListener 监听ServletContext对象的创建和销毁 ...例子,新建一个类,实现ServletContextListener,重写方法 package com.lingaolu.listener; import javax.servlet.ServletContextEven... -
Spring Boot项目整合Listener
2020-09-16 13:58:27Spring Boot项目整合Listener 新建一个简单的spring boot的web项目 方式一: 方式二: -
C# TcpListener TcpClient
2019-12-10 15:15:51C# TcpListener TcpClient 使用,新建从控制台项目,引用System.Net 代码如下: using System; using System.Collections.Generic; using System.Diagnostics; using System.Globalization; using System.IO; //... -
javaweb中使用Listener监听器
2014-04-27 22:29:07首先新建一个listener监听类,该类可以实现 -
SpringBoot的ApplicationEvent和ApplicationListener的简单使用
2019-04-14 15:31:34ApplicationEvent和ApplicationListener一般都是配合使用 ... 新建一个ApplicationListener的子类 public class MyApplicationEvent extends ApplicationEvent { public MyApplicationEvent(Object sour... -
学习java web中的listener
2018-07-13 14:37:00web.xml里的顺序为:context-...监听器是需要新建一个类,然后按监听的对象继承:ServletContext、HttpSession、ServletRequest中的一个 监听ServletContext生命周期的Listener //ServletContext lifecycle... -
servlet监听器Listener
2020-06-02 20:59:45@TOC 监听的作用 ...1、新建一个MyServlet类,继承ServletContextListener 2、重写contextInitialized()和contextDestroyed()方法 package jndi; import javax.servlet.ServletContextEvent; im -
servlet listener 用法
2010-05-08 14:50:35这个用法是针对...新建一个类: import javax.servlet.ServletContextListener; import ejbModule.common.EJB3Factory; import ejbModule.operation.terminal.AdaptationModelMgr; public cla... -
Listener实现单态登陆
2016-12-28 17:05:00MyEclipse中新建Web Project项目,完整目录如下: 需要的jar包为commons-logging-xxx.jar 1、singleton.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%&... -
Listener监听器使用小案例
2014-04-02 22:22:00新建一个监听器实现ServletContextListener接口 覆写contextDestroyed和contextInitialized 方法 package listener;import java.util.Timer;import javax.servlet.ServletContextEvent;import javax.servlet.Se... -
Tomcat启动报Error listenerStart错误
2018-06-06 09:58:00Tomcat启动报Error listenerStart错误 学习了:http://xpenxpen.iteye.com/blog/1545648 可以在WEB-INF/classes目录下新建一个文件叫logging.properties, handlers = org.apache.juli.FileHandler, java.util.... -
servlet5 filter、listener
2020-12-23 23:06:34
2020-08-02 22:46:12JavaWEB中的监听器主要监听JavaWEB中的request、session、ServletContext对象的各种变化。 尽量不要定义全局变量,全局...1、新建一个普通java类实现以下接口。 2、在web.xml文件中注册监听器类 ServletRequestListener -
tomcat启动Error ListenerStart解决办法
2018-08-23 14:27:01Tomcat报的错太含糊了,什么错都没报出来,只提示了Error listenerStart。为了调试,我们要获得更详细的日志。可以在WEB-INF/classes目录下新建一个文件叫logging.properties,内容如下 Java代码 handlers...
-
华为机试 质数因子
-
uniapp之导航栏设置和沉浸式的解决方法
-
PPT大神之路高清教程
-
C语言零基础入门(详细讲解)
-
MySQL 主从复制 Replication 详解(Linux 和 W
-
杭电OJ 1233 还是畅通工程
-
Galera 高可用 MySQL 集群(PXC v5.7+Hapro)
-
fpga资料.zip
-
剑指06 - 旋转数组中的最小元素
-
int 和 long之间自动类型转换的注意点
-
NFS 网络文件系统
-
hexo博客搭建
-
linux c can总线通信 源代码
-
Flume--相关图例
-
牛牛量化策略交易
-
华为机试 合并表记录
-
基于SSM实现的房屋租赁系统【附源码】(毕设)
-
自媒体搞笑音效和段子素材
-
第四次CCF计算机软件能力认证 节日 (模拟)
-
数据库面试题【十六、优化长难的查询语句】