Java_JSP2_Listener监听器浅谈;
来源:互联网 发布:外国人留学中国知乎 编辑:程序博客网 时间:2024/06/06 08:32
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 */@WebListenerpublic class GetConnListener implements ServletContextListener{//应用启动时,该方法被调用。public void contextInitialized(ServletContextEvent sce){try{//取得该应用的ServletContext实例ServletContext application = sce.getServletContext();//从配置参数中获取驱动String driver = application.getInitParameter("driver");//从配置参数中获取数据库urlString 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>
特别说明:如果能帮助到您,请您留下点滴痕迹,让我知道我的存在是有意义的;如果不能帮助到您,请接受我的歉意;
- Java_JSP2_Listener监听器浅谈;
- 浅谈 Oracle 监听器
- 浅谈 Oracle 监听器
- 浅谈 Oracle 监听器
- 浅谈 Oracle 监听器
- 浅谈 Oracle 监听器
- 观察者模式(浅谈监听器工作原理)
- 监听器
- 监听器
- 监听器
- 监听器
- 监听器
- 监听器
- 监听器
- 监听器
- 监听器
- 监听器
- 监听器
- Mac使用--截屏方法
- 搭建SNS游戏服务器
- HTML DOM_getElementById
- java并发编程教程
- HTML DOM_getElementsByName
- Java_JSP2_Listener监听器浅谈;
- <黑客免杀攻防>第二章免杀基础知识 笔记
- 多岁的飞飞是多少飞尔耳投入也会更好
- HDU 1061 Rightmost Digit
- String、StringBuffer、StringBuilder
- Android 中比 Timer 更好方法
- Django 中如何针对自定义的 View 做分页显示
- Android getResources寻找匹配问题
- Linux USB gadget解析(3)