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、付费专栏及课程。

余额充值