1、常用Web事件监听器接口
(1)、ServletContextListener:监听Web应用的启动和关闭;
(2)、ServletContextAttributeListener:监听ServletContext范围(application)内属性的改变;
(3)、ServletRequestListener:监听用户请求;(4)、ServletRequestAttributeListener:监听ServletRequest范围(request)内属性的改变;
(5)、HttpSessionListener:监听用户session的开始和结束;(6)、HttpSessionAttributeListener:监听HttpSession范围(session)内属性的改变;
2、ServletContextListener接口方法(1)、contextInitialized(ServletContextEvent sce):启动Web应用时,系统调用Listener的该方法;
(2)、contextDestroyed(ServletContextEvent sce):关闭Web应用时,系统调用Listener的该方法;注意:ServletContextListener的作用有点类似于load-on-startup Servlet,都可用于在Web应用启动时,回调方法来启动某些后台程序,这些后台程序负责为系统运行提供支持;
3、ServletContextListener实例_GetConnListener.java
说明:该Listener会在应用启动时获取数据库连接(Connection),并将获取到的连接设置成application范围内的属性;
=>GetConnListener.java
<span style="font-size:18px;">package lee;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.annotation.*;
/**
* GetConnListener_class
* description:ServletContextListener监听器,监听web应用启动、关闭;
* date:13:52 2014-10-30;
* @author cyb_23
* @version 1.0
*/
@WebListener
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();
}
}
}
}</span>
切记:在web.xml下配置应用参数,类似
<context-param>
<param-name>driver</param-name>
<param-value>com.mysql.jdbc.Driver</param-value>
</context-param>
特别特别说明:此例将Connection实例设置成application属性,导致所有页面都使用相同的Connection实例,实际上这种做法的性能非常差;较为实用的做法是:应用启动时将一个数据源(javax.sql.DataSource实例)设置成application属性,页面通过DataSource实例来取得数据库连接,再进行数据库访问(http://blog.csdn.net/cyb_23/article/details/39924577;有关数据源配置信息);
4、配置Listener
说明:配置Listener只要向Web应用注册Listener实现类即可,无须配置参数之类;
>配置Listener方式
(1)、使用@WebListener修饰Listener实现类即可;
(2)、在web.xml文档中使用<listener.../>元素进行配置;
<listener>
<!-- 指定Listener的实现类 -->
<listener-class>lee.GetConnListener</listener-class>
</listener>
特别说明:如果能帮助到您,请您留下点滴痕迹,让我知道我的存在是有意义的;如果不能帮助到您,请接受我的歉意;