Listener的使用(监听Web应用的启动和关闭)

    监听Web应用的启动和关闭,需要实现ServletContextListener接口。下面以应用启动时建立一个到数据库的连接,关闭应用时关闭数据库的连接。当然实际应用时通过这种方式建立到数据库的连接效率是非常低的,仅供举例使用

1. 实现ServletContextListener接口,GetConnListener.java

package test;
import java.sql.*;
import javax.servlet.*;
public class GetConnListener implements ServletContextListener
{
    //应用启动时,该方法被调用。
    public void contextInitialized(ServletContextEvent sce){
        try{
            //取得该应用的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");
            //注册驱动
            Class.forName(driver);
            //获取数据库连接
            Connection conn = DriverManager.getConnection(url,user,pass);
            //将数据库连接设置成application范围内的属性
            application.setAttribute("conn" , conn);
        }catch (Exception ex){
            System.out.println("Listener中获取数据库连接出现异常"+ex.getMessage());
        }
    }
    //应该关闭时,该方法被调用。
    public void contextDestroyed(ServletContextEvent sce){
        //取得该应用的ServletContext实例
        ServletContext application = sce.getServletContext();
        Connection conn = (Connection)application.getAttribute("conn");
        //关闭数据库连接
        if (conn != null){
            try{
                conn.close();
            }catch (SQLException ex){
                ex.printStackTrace();
            }
        }
    }
}

2. 在web.xml中配置Listener,除此还可以用@WebListener修饰实现类的方法去配置(需Servlet3.0以上)

      <context-param>
        <param-name>driver</param-name>
        <param-value>com.mysql.jdbc.Driver</param-value>
    </context-param>
    <context-param>
        <param-name>url</param-name>
        <param-value>jdbc:mysql://localhost:3306/javaee</param-value>
    </context-param>
    <context-param>
        <param-name>user</param-name>
        <param-value>root</param-value>
    </context-param>
    <context-param>
        <param-name>pass</param-name>
        <param-value>32147</param-value>
    </context-param>

    <listener>
        <!-- 指定Listener的实现类 -->
        <listener-class>test.GetConnListener</listener-class>
    </listener>

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值