观察者模式(Observer),又叫发布-订阅模式(Publish/Subscribe),定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并自动更新。

#1、基本概念

  • servlet是一种运行服务器端的java应用程序,它可以用来处理请求和响应。这是我们tomcat容器最重要的组成部分。
  • filter称之为过滤器,不像Servlet,它不处理具体的业务逻辑,它是一个中间者,它能够按照具体的规则拦截我们的请求和响应,并执行响应的操作。
  • listener叫监听器,它用来监听容器内的一些变化,如session的创建,销毁,servlet容器的创建销毁等。当这些内容变化产生时,监听器就要完成一些工作。这是观察者设计模式的典型使用场景。

    2、生命周期

    (1)servlet:

    servlet的生命周期始于它被装入web服务器的内存时,并在web服务器终止或重新装入servlet时结束。servlet一旦被装入web服务器,一般不会从web服务器内存中删除,直至web服务器关闭或重新结束。
  1. 装入:第一次访问,启动服务器时加载Servlet的实例;
  2. 初始化:web服务器启动时或web服务器接收到请求时,或者两者之间的某个时刻启动。初始化工作有init()方法负责执行完成;
  3. 调用:从第一次到以后的多次访问,都是只调用doGet()或doPost()方法;
  4. 销毁:停止服务器时调用destroy()方法,销毁实例。

    (2)filter:

    一定要实现javax.servlet包的Filter接口的三个方法init()、doFilter()、destroy(),空实现也行

  5. 启动服务器时加载过滤器的实例,并调用init()方法来初始化实例;

  6. 每一次请求时都只调用方法doFilter()进行处理;
  7. 停止服务器时调用destroy()方法,销毁实例。

    (3)listener:

    类似于servlet和filter
    servlet2.4规范中提供了8个listener接口,可以将其分为三类,分别如下:
  • 第一类:与servletContext有关的listner接口。包括:ServletContextListener(监听当前整个应用被启动和关闭触发一次)、
  • ServletContextAttributeListener
  • 第二类:与HttpSession有关的Listner接口。
  • 包括:
    • HttpSessionListner(session监听器)、
    • HttpSessionAttributeListener(session添加属性或者移除属性监听器)、
    • HttpSessionBindingListener、 HttpSessionActivationListener;
  • 第三类:与ServletRequest有关的Listener接口,包括: ServletRequestListner(请求监听器 请求被发起的时候触发)、
    • ServletRequestAttributeListener(请求的属性监听)

FileSharing.jpg
web.xml 的加载顺序是:context- param -> listener -> filter -> servlet