Servlet监听器笔记总结

简介: 监听器Listener的概念  监听器的概念很好理解,顾名思义,就是监视目标动作或状态的变化,目标一旦状态发生变化或者有动作,则立马做出反应.  Servlet中的也有实现监听器的机制,就是Listener,Listener是一个实现特定接口的普通java程序,专门用来监听另一个java对象的方法调用或属性改变,当被监听对象发生变动时,监听器某个方法立即被执行.

监听器Listener的概念

  监听器的概念很好理解,顾名思义,就是监视目标动作或状态的变化,目标一旦状态发生变化或者有动作,则立马做出反应.

  Servlet中的也有实现监听器的机制,就是Listener,Listener是一个实现特定接口的普通java程序,专门用来监听另一个java对象的方法调用或属性改变,当被监听对象发生变动时,监听器某个方法立即被执行.

监听器Listener的使用场景

  理解了概念,接下来问题就来了,监听器Listener有哪些使用场景呢?

  在使用Spring框架开发javaWeb项目时,我们都会在web.xml中加入一个Listener,叫ContextLoaderListener.

 <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

</listener>

  它的作用是,在启动web容器时,自动装配ApplicationContext的配置信息,初始化好Spring的IOC容器,这样就可以在项目启动的时候马上就可以去IOC容器中取到我们需要的对象.

  这个ContextLoaderListener就扮演的是一个监听器的角色,它实现了一个ServletContextListener接口,ServletContextListener中有两个方法:

public interface ServletContextListener extends EventListener {
    void contextInitialized(ServletContextEvent var1);
    void contextDestroyed(ServletContextEvent var1);
}

  当ServletContext对象创建,即容器启动时,监听器监听到了这一动作,就会调用contextInitialized这个方法,完成ApplicationContext的装配初始化工作.

/**
     * Initialize the root web application context.
     */
    public void contextInitialized(ServletContextEvent event) {
        this.contextLoader = createContextLoader();
        if (this.contextLoader == null) {
            this.contextLoader = this;
        }
        this.contextLoader.initWebApplicationContext(event.getServletContext());
    }

  initWebApplicationContext就是用来初始化IOC容器的方法.

  大概理通了这个流程,我们来看看更多Listener的使用场景:

  1.在系统启动时加载初始化信息

  2.统计网站的访问量

  3.统计在线人数和在线用户

  4.运用在一些框架(如Spring)中完成特定功能.

使用Listener的步骤

1.新建一个java类实现XXXListener接口,实现代码逻辑

2.在Web.xml注册自己新建的Listener

Listener的启动顺序

  Listener的启动优先级是大于过滤器的,即Listener>Filter>Servlet

  如果有很多Listener类,那么Listener的作用时机是根据你在web.xml中注册的顺序来决定的,即按照从上往下的顺序来加载.

Servlet中常用的Listener接口

1.按照域对象的创建和销毁来分类

public class MyServletContextListener implements ServletContextListener{

//servletContext创建时调动此方法(容器启动)
    public void contextInitialized(ServletContextEvent servletContextEvent) {
    }
//servletContext销毁时调用此方法(容器关闭)
    public void contextDestroyed(ServletContextEvent servletContextEvent) {
    }
}

   相同类型的Listener的还有HttpSessionListener,ServletRequestListener.

2.按照域中属性的增加移除来分类

public class MyApplicationAttributeListener implements ServletContextAttributeListener {
   //当Application域中属性增加时调用此方法
    public void attributeAdded(ServletContextAttributeEvent servletContextAttributeEvent) {
    }
//当Application域中属性移除的时候调用此方法
    public void attributeRemoved(ServletContextAttributeEvent servletContextAttributeEvent) {
    }
//当Application域中对象被更新时调用此方法
    public void attributeReplaced(ServletContextAttributeEvent servletContextAttributeEvent) {
    }
}

  相同类型的Listener还有HttpSessionAttributeListener,ServletRequestAttributeListener

3.监听HttpSession域中某个具体对象状态的Listener

  这种Listener比较特别,以上介绍的几种都需要在web.xml中注册监听器,而这种不需要,为什么呢,看代码比较好理解:

public class User implements HttpSessionBindingListener {
    private String username;
    private String password;
//当session域中绑定了User对象时调用此方法
    @Override
    public void valueBound(HttpSessionBindingEvent httpSessionBindingEvent) {
    }
//当session域中移除了User对象绑定时调用此方法
    @Override
    public void valueUnbound(HttpSessionBindingEvent httpSessionBindingEvent) {
    }
}

相同类型的还有还有一种 HttpSessionActivationListener,涉及session域中对象的序列化和反序列化.

相关文章
|
27天前
|
监控 前端开发 Java
揭秘Web开发神器:Servlet、过滤器、拦截器、监听器如何联手打造无敌博客系统,让你的用户欲罢不能!
【8月更文挑战第24天】在Java Web开发中,Servlet、过滤器(Filter)、拦截器(Interceptor,特指Spring MVC中的)及监听器(Listener)协同工作,实现复杂应用逻辑。以博客系统为例,Servlet处理文章详情请求,过滤器(如LoginFilter)检查登录状态并重定向,Spring MVC拦截器(如LoggingInterceptor)提供细粒度控制(如日志记录),监听器(如SessionListener)监控会话生命周期事件。这些组件共同构建出高效、有序的Web应用程序。
29 0
|
3月前
技术笔记:Servlet作业2
技术笔记:Servlet作业2
13 0
|
4月前
|
前端开发 Java 程序员
Servlet/过滤器/拦截器/监听器:
Servlet接口在Sun公司有两个默认的实现类:HttpServlet、GenericServlet。Servlet是一种运行服务器端的Java应用程序,具有独立于平台和协议的特性,并且可以动态的生成web页面,它工作在客户端请求与服务器响应的中间层。
|
存储 Java 数据安全/隐私保护
servlet过滤器与监听器
前言 Servlet 过滤器和监听器是 Java Web 应用程序中常见的两种组件,它们提供了各种扩展 Web 应用程序功能的方式。 总的来说,过滤器和监听器都可以通过 Java Web 应用程序的配置文件或注解进行使用,方便灵活,并可以很好地实现框架与业务逻辑的分离,提高代码可维护性和扩展性。 过滤器(Filter) 1. 参数验证和转换:可以拦截用户提交的数据,并对数据格式进行验证、修正或转换。 2. 访问控制和认证:可以拦截请求并检查用户是否有访问特定资源的权限。 3. 日志记录:可以拦截请求并输出相应的日志信息,用于系统运行时的监测与故障排除。 4. 资源压缩和解密: 可以拦截响应并对
70 0
|
Java 应用服务中间件
如何在个人web项目中使用Servlet监听器?
如何在个人web项目中使用Servlet监听器?
|
存储 Java
【Java Web编程 十一】深入理解Servlet监听器
【Java Web编程 十一】深入理解Servlet监听器
98 0
【Java Web编程 十一】深入理解Servlet监听器
|
JSON 前端开发 JavaScript
JAVA-JSP/Servlet 笔记(九)
JAVA-JSP/Servlet 笔记(九)
|
缓存 前端开发 JavaScript
JAVA-JSP/Servlet 笔记(八)
JAVA-JSP/Servlet 笔记(八)
|
Java 关系型数据库 MySQL
JAVA 笔记-JSP/Servlet(七)
JAVA 笔记-JSP/Servlet(七)