Springboot——监听器

Springboot——监听器,第1张

监听器(Listener)是servlet规范中定义的一种特殊类。用于监听servletContext、HttpSession和servletRequest等域对象的创建和销毁事件;监听域对象的属性发生修改的事件;用于在事件发生前后做一些必要的处理。

其主要可用于以下方面:

1、统计在线人数和在线用户

2、系统启动时加载初始化信息

3、统计网站访问量

4、记录用户访问路径。

Servlet中的监听器的分类:

(1)监听三个域对象的创建和销毁的监听器

(2)监听三个域对象的属性变更(属性添加、移除、替换)的监听器

(3)监听HttpSession中JavaBean的状态改变(钝化、活化、绑定、解除绑定)的监听

监听器相关术语:

事件源:被监听者

监听器:监听者

事件源和监听器绑定:在事件源上安装监听器

事件:指的是事件源对象的改变——主要功能获得事件源对象。

统计在线人数

方式1、使用自带的ServletListenerRegistrationBean 完成设置

(1)首先创建一个MyHttpSessionListener类

(2)使用@Configuration注解替代web.xml对监听器进行配置

(3)创建一个控制器UserController

方式2、 使用@WebListener注解完成设置

(1)创建一个MyHttpSessionListener类

(2)在入口类(Listenerdemo2Application)中加入@ServletComponentScan注解,开启对注解@WebListener的支持

(3)创建一个控制器UserController(同方式1)

!注:(1)使用@ServletComponentScan配合@WebListener后,就不用创建MyMvcConfig这个类。二者选其一即可。

(2)springboot默认会检索启动类所在包和子包下的所有spring容器相关的注解(比如@Controller、@Component等),但是像@WebFilter和@WebListener之类的不会。

Listener是Servlet的监听器,它可以监听客户端的请求、服务端的 *** 作等。通过监听器,可以自动激发一些 *** 作,比如监听在线的用户的数量。当增加一个HttpSession时,就激发sessionCreated(HttpSessionEvent se)方法,这样就可以给在线人数加1。常用的监听接口有以下几个:

ServletContextAttributeListener监听对ServletContext属性的 *** 作,比如增加、删除、修改属性。

ServletContextListener监听ServletContext。当创建ServletContext时,激发contextInitialized(ServletContextEvent sce)方法;当销毁ServletContext时,激发contextDestroyed(ServletContextEvent sce)方法。

HttpSessionListener监听HttpSession的 *** 作。当创建一个Session时,激发session Created(HttpSessionEvent se)方法;当销毁一个Session时,激发sessionDestroyed (HttpSessionEvent se)方法。

HttpSessionAttributeListener监听HttpSession中的属性的 *** 作。当在Session增加一个属性时,激发attributeAdded(HttpSessionBindingEvent se) 方法;当在Session删除一个属性时,激发attributeRemoved(HttpSessionBindingEvent se)方法;当在Session属性被重新设置时,激发attributeReplaced(HttpSessionBindingEvent se) 方法。

直接用filter监听

public class MyFilter extends HttpServlet implements Filter

然后在web.xml中配置:

<filter>

<filter-name>myfilter</filter-name>

<filter-class>com.fiter.MyFilter</filter-class>

</filter>

<filter-mapping>

<filter-name>myfilter</filter-name>

<url-pattern>*.jsp</url-pattern>

</filter-mapping>

<filter-mapping>

<filter-name>myfilter</filter-name>

<url-pattern>/servlet/*</url-pattern>

</filter-mapping>


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11179129.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存