web监听器是一种Servlet中的特殊的类,它们能帮助开发者监听web中的特定事件,比如ServletContext,HttpSession,ServletRequest的创建和销毁等。可以在某些动作前后增加处理,实现监控。
Servlet中提供了8个监听器。
思路扩展:
- 既然Listener能够监听ServletContext,那麽就能够监听到项目的创建和销毁。当监听到项目启动时,可以做一些项目的初始化,降低运行期间的服务器压力,加快响应速度等;同样在监听到项目销毁时也能够做一些事情,保证项目关闭的干净利索。ServletContextListenner用来监听ServletContext对象的创建和销毁的。
- HttpSession的创建和销毁,那麽就能够统计在线总人数。方法是:HttpSessionListener可以用来监听session对象的创建和销毁
的。所以可以在HttpSessionListener中的监听session对象创建和销毁的方法中控制在线人数的加减。
3.ServletRequest的创建和销毁,这个情况就很多了,就不再过多介绍了。只要实现ServletRequestListener中的两个方法即可。
下面对这八种监听器进行介绍:
奥,对喽!文字看的烦躁了吧,这回上表格,让你一目了然!
一类:监听三个域对象的创建和销毁的监听器
被监听对象 | 对应的监听器 |
---|---|
ServletContext | ServletContextListener |
HttpSession | HttpSessionListener |
HttpServletRequest | ServletRequestListener |
二类:监听三个域对象的属性变更的监听器.(属性的添加,移除和替换)
被监听对象 | 对应的监听器 |
---|---|
ServletContext | ServletContextAttributeListener |
HttpServletRequest | ServletRequestAttributeListener |
HttpSession | HttpSessionAttributeListener |
三类:监听HttpSession对象中的JavaBean的状态的改变.(绑定,解除绑定,钝化和活化)2个
被监听对象 | 对应的监听器 | 监听的操作 |
---|---|---|
HttpSession | HttpSessionBindingListener | 绑定,解除绑定 |
HttpSession | HttpSessionActivationListener | 钝化和活化 |
介绍完事,说下具体怎末使用吧!
不用想肯定又是配置文件和注解两种方法
方法一:配置文件
web.xml配置如下:
<listener>
<listenerclass>com.kangaroo.listener.MyServletContextListener</listener‐class>
</listener>
java代码
public class MyServletContextListener implements ServletContextListener{
@Override
/**
* 项目启动时创建上下文对象
* 处理创建的响应行为(方法)
*/
public void contextInitialized(ServletContextEvent servletContextEvent) {
System.out.println("监听到 上下文对象创建啦...");
}
@Override
/**
* 项目关闭时,或项目从服务器上移除时
* 处理销毁的响应行为(方法)
*/
public void contextDestroyed(ServletContextEvent servletContextEvent) {
System.out.println("监听到 上下文对象销毁啦...");
}
}
方法二:注解
@WebListener
public class MyServletContextListener implements ServletContextListener{
@Override
/**
* 项目启动时创建上下文对象
* 处理创建的响应行为(方法)
*/
public void contextInitialized(ServletContextEvent servletContextEvent) {
System.out.println("监听到 上下文对象创建拉...");
}
@Override
/**
* 项目关闭时,或项目从服务器上移除时
* 处理销毁的响应行为(方法)
*/
public void contextDestroyed(ServletContextEvent servletContextEvent) {
System.out.println("监听到 上下文对象销毁拉...");
}
}
两种方法推荐试用第二种,只需在监听类上加上@WebListener即可,简单容易理解
其他的监听器大致都这样,我这里就是抛砖引玉,有码神可以交个朋友,下方评论区见。累了今天就到这里吧!!!!!