通过implements ServletContextListener实现监听器Linstener

package cn.config;

import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

/*
* Servlet 容器启动或终止Web 应用时,会触发ServletContextEvent事件
* 
* ServletContext对象是一个为整个Web应用提供共享的内存,任何请求都可以获取里面的内容
* 实现ServletContextListener时通过ServletContext.setAttribute(key,value)将内容提交到内存中
* 其他地方通过ServletContext.getAttribute(key)获取内容(HelloWorld#doPost)
* 
* 官方对于ServletContextEvent的介绍:
* This is the event class for notifications about changes to the servlet context of a web application.
*/

public class MyLinstener implements ServletContextListener {

    /**
     * ① Servlet启动时先调用contextInitialized方法, 之后再对Filter和需要被初始化的Servlet初始化
     */
    @Override
    public void contextInitialized(ServletContextEvent paramServletContextEvent) {
        ServletContext context = paramServletContextEvent.getServletContext();
        context.setAttribute("linstener", "fromContextInitialized");
        System.out.println("...    contextInitialized    ... ");
    }

    /**
     * ② Servlet停止时先销毁所有的Servlet和Filter, 再调用contextDestroyed方法
     */
    @Override
    public void contextDestroyed(ServletContextEvent paramServletContextEvent) {
        ServletContext dest = paramServletContextEvent.getServletContext();
        System.out.println("contextDestroyed... " + dest.getAttribute("linstener"));
    }

}

web.xml配置监听器

- 阅读剩余部分 -

一、生命周期 init()、service()、destory()

  1. 在第一次创建Servlet的时候通过init()初始化,之后不再执行此方法
  2. 通过service()处理HTTP请求,常用doGet()、doPost()
  3. destory()在Servlet结束时执行
    最后由JVM进行垃圾回收.

二、实现方式 implements Servlet、extends GenericServlet、extends HttpServlet

HttpServlet本身就是通过implements Servlet实现的.


三、代码示例: 通过继承HttpServlet实现Servlet


- 阅读剩余部分 -