Servlet监听器Listener

Servlet监听器:

ListenerServlet的监听器

可以监听客户端的请求,服务端的操作等

通过监听器自动进行一些操作,如在线用户量的统计,当增加一个session时,在线人数就会增加1.

监听器的部署:部署之后自动执行

部署位置:部署在XML中,位置在过滤器后面,Servlet前面

一个XML配置可以注册多个Servlet事件监听器

Web服务器按照web.XML中注册顺序来加载Servlet事件监听器

Web应用程序中只会为每个事件监听器类创建一个实例对象,在编程中可能出现多个线程同时调用一个事件监听器的情况,要注意监听器对象共享同步问题。

按照监听器对象划分:

监听应用程序环境对象(ServletContext)的事件监听器

监听用户会话对象(HttpSession)的事件监听器

监听请求消息对象(ServletRequest)的事件监听器

按照监听器事件分类:(一般为内置对象的监听)

监听域对象自身的创建和销毁的事件监听器

监听域对象中的属性的增加和删除的事件监听器

监听绑定到HttpSession域中的某个对象的状态的事件监听器

三大监听器:

ServletContextListener:对应所有用户

ServletSessionListener:对应于一个用户

ServletRequestListener:对应当前请求

 

分别实现相应的接口就可以实现对应的监听处理

上下文监听:

ServletContextListener:用于监听web应用的启动和销毁的事件

要实现ServletContextListener接口

 


属性监听:

ServletContextAttributeListener:用于监听web应用属性改变的事件,包括增加删除属性,修改属性。

监听创建销毁:

HttpSessionListener:用于监听Session对象的创建和销毁。

要实现HttpSessionListener接口,或HttpSessionActivationListener接口(此接口常用于监听Session的钝化/活化事件)。

 

Request监听(HttpServletRequest):

监听请求的创建和撤销,监听请求到达和结束,可在请求到达之前和结束之前执行一些自定义的行为。

XML中的配置为:

<listener>

<listener-class>包名.类名</listener-class>

</listener>

 

Request对象建立时,调用requestInitialLized()方法

 Request对象增加时,调用request.attributeAddedServletRequestAttributeEvent

 删除调用,request.AttributeRemoved(ServletRequestAttributeEvent)

 替换调用,request.AttributeRemoved(ServletRequestAttributeEvent)

此三个函数都有getName()getValue()方法

 

Request对象被销毁是调用requestDestroyed()方法




Application监听器:

提供了两个接口:

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

属性增加时激发:AttributeAdded方法

修改时激发   :AttributeReplace方法

删除是激发   :AttributeRemoved方法

ServletContextListener,监听application内置对象的生命周期。

以上两个接口根据需要使用。

创建ServletContext时会激发ContextInitialized(ServletContextEvent  sce)方法,

销毁ServletContext时会激发ContextDestroyed(ServletContextEvent  sce)方法。

Session监听器:

提供两个接口:

HttpSessionListener:用来监听HttpSession的操作

创建一个Session时激发SessionCreated方法

销毁一个Session时激发SessionDestroyed方法

HttpSessionAttributeListener:监听对ServletContext的属性的操作,比如增加,修改,删除。

Session属性增加时激发:AttributeAdded方法

Session属性修改时激发:AttributeReplace方法

Session属性删除是激发:AttributeRemoved方法

以上两个接口根据需要使用。

操作可以使用对象获取当前的Session,通过Session获取其他对象,然后进行操作。


HttpSessionBinderListener

 

Session销毁

调用Session.invalidate()方法

Session到了设置或默认的超时时间,自动销毁

关闭浏览器此Session还未销毁,只是不能再用了

实现:

它不需要对XML文件进行配置

HTTPSessionBindingListener对象所对应的Session进行监听

两个函数:

valueBundsetAttribute是触发

valueUnBundsession销毁是被触发

valueUnbund方法将被一下任一条件出发:

A.执行Session.setAttribute

B.执行Session.RemoveAttribute

C.执行Session.invalidate

D.Session超时后

监听器区别:

HttpSessionListener只需在XML设置一次就可以对所有的Session进行监听

HttpSessionBingdingListener通常是成对出现的

监听器注解的使用:

导入

import javax.servlet.annotation.WebListener;

@WebListener

写上这两句就算是已经注解了,不用在XML中进行配置了,相比过滤器的注解还是比较简单的。

 

 

过滤器与监听器的总结:

过滤器:

过滤器是Servlet的一种特殊用法。完成通用的操作,如编码的过滤,事务的提交,用户的登录状态等。

过滤器能够在客户端请求到达Servlet之前被截获,处理之后再发给被请求的资源,还可以响应截获,修改之后再发给用户,分为之前之后拦截。

过滤器支持一下功能:

如性能,安全,日志,会话处理,等。

过滤器本身不产生请求和响应,只提供过滤作用。

过滤器可以检查和修改requestresponse对象

过滤器可以被指定和特定的URL相关联,只有当客户请求访问该特定的URL时,才会触发过滤器。

过滤器可以被串联成串,形成过滤链,协同修改请求和响应。

过滤器作用:

根据请求可以做出改变

修改请求头和内容,提供自定义的请求

修改相应头和内容,提交自定义的回应

过滤器的应用:

可应用在Servlet程序和Servlet程序之间,JSP页面和JSP页面之间,客户端和Servlet程序之间,Servlet程序和JSP页面之间进行过滤请求处理。

 

监听器:

监听客户端的请求,服务端的操作,通过监听器自动激发一些操作。

原理:

监听器是web开发的重要组成部分,对web应用进行监督和控制,大大增强了web应用的时间处理能力。

监听器的功能类似与java中的GUI程序的监听器,可以监听由于web应用中的状态改变而引起的Servlet容器产生的相应事件,然后做出客户希望的处理。

类型:

请求监听器,会话监听器,上下文监听器。

8个监听器接口和6个监听器事件类。在具体编程中使用。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值