ServletContextListener 监听者

ServletContextListener监听者类能监听ServletContext一生中的两个关键事件,初始化(创建)和撤销。这个类实现了javax.servlet.ServletContextListener

ServletContextListener类,它能做到:
- 上下文初始化(应用正在得到部署)时得到通知。
- 从ServletContext得到上下文初始化参数。
- 使用初始化参数查找名建立一个数据库连接。
- 把数据库连接存储为一个属性,使得Web应用的各个部分都能访问。
- 上下文撤销(应用取消部署或结束)时得到通知。
- 关闭数据库连接

一、 ServletContextListener
MyServletContextListener.java
这个类实现了ServletContextListener,它得到上下文初始化参数,创建Dog,并把Dog设置为上下文属性。
二、 属性类
Dog.java
Dog类只是一个普通的Java类。它的任务是作为一个属性值,由ServletContextListener实例化,并设置在ServletContext中,以便servlet获取。
三、 Servlet
ListenerTester.java
这个类扩展了HttpServlet。它的任务是验证监听者的工作,为此,这个Servlet会从上下文得到Dog属性,然后调用Dog的getBreed(),并把结果打印到响应(以便我们在浏览器上看到)。


编写监听者类

public class MyServletContextListener implements ServletContextListener {

    // 上下文撤销(应用取消部署或结束)时得到通知
    @Override
    public void contextDestroyed(ServletContextEvent event) {
    }

    // 上下文初始化(应用正在得到部署)时得到通知
    // 监听者的任务是得到有关上下文初始化参数,然后使用这个String来构造一个Dog对象
    // 监听者再把这个Dog对象存放在一个ServletContext属性中,以便servlet获取
    @Override
    public void contextInitialized(ServletContextEvent event) {
        ServletContext sc = event.getServletContext();
        String dogBreed = sc.getInitParameter("breed");
        Dog d = new Dog(dogBreed);
        sc.setAttribute("dog", d);

    }

}

编写属性类(Dog)

public class Dog {
    private String breed;
    public Dog(String breed){
        this.breed = breed;
    }
    public String getBreed(){
        return breed;
    }
}

编写servlet类

public class ListenerTester extends HttpServlet{

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();

        out.println("test context attributes set by listener<br>");

        out.println("<br>");

        Dog dog = (Dog) getServletContext().getAttribute("dog");

        out.println("Dog's breed is:" + dog.getBreed());
    }
}

编写部署描述文件(DD)

  <servlet>
    <servlet-name>ListenerTester</servlet-name>
    <servlet-class>com.example.ListenerTester</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>ListenerTester</servlet-name>
    <url-pattern>/ListenTest.do</url-pattern>
  </servlet-mapping>

  <context-param>
    <param-name>breed</param-name>
    <param-value>Great Dane</param-value>
  </context-param>

  <listener>
    <listener-class>com.example.MyServletContextListener</listener-class>
  </listener>
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值