ServeletContextListener的使用

Listener可以监听容器中某一执行动作,并根据其要求做出相应的响应。   
常用的Web事件的监听接口如下:
ServletContextListener:用于监听Web的启动及关闭
ServletContextAttributeListener:用于监听ServletContext范围内属性的改变
ServletRequestListener:用于监听用户请求
ServletRequestAttributeListener:用于监听ServletRequest范围属性的改变
HttpSessionListener:用于监听用户session的开始及结束

HttpSessionAttributeListener:用于监听HttpSession范围内的属性改变

对于ServeletContextListener通常用来在应用开始或结束时执行某些动作,常用来执行定时任务

使用前首选需要在web.xml中配置相应的Listener,下面的例子展示了通过ServeletContextListener进行数据库连接的操作

package listener;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
/**
 * 监听Web应用启动及关闭
 * @author xieyongxue
 *
 */
public class GetConnListener implements ServletContextListener{
    //应用关闭时,此方法被调用
    public void contextDestroyed(ServletContextEvent sce) {
        // TODO Auto-generated method stub
        ServletContext application=sce.getServletContext();
        Connection conn=(Connection) application.getAttribute("conn");
        if (conn!=null) {
            try {
                conn.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }
    //应用启动时,此方法被调用
    public void contextInitialized(ServletContextEvent sce) {
        // TODO Auto-generated method stub
        //获取到该应用的ServletContext的实例
        ServletContext application=sce.getServletContext();
        //获取数据库驱动
        String driver=application.getInitParameter("driver");
        //加载数据库连接URL
        String url=application.getInitParameter("url");
        //获取登录数据库的名称
        String user=application.getInitParameter("user");
        //获取连接数据库的密码
        String pass=application.getInitParameter("pass");
        try {
            try {
                Class.forName(driver);
            } catch (ClassNotFoundException e) {
                // TODO Auto-generated catch block
                System.out.println("加载数据库驱动失败!"+e.toString());
                e.printStackTrace();
            }
            Connection conn= DriverManager.getConnection(url, user, pass);
            //将数据库连接设置成application的属性
            application.setAttribute("conn", conn);
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            System.out.println("连接数据库失败!"+e.toString());
            e.printStackTrace();
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值