JSP之监听器Listener(一)————————ServletContextListener

摘要:

       当web应用在web容器中运行时,web应用内部会不断地发生各种事件:如web应用被启动东,web应用被停止,用户session开始,用户session结束,用户请求到达等等……,这些web事情对开发者是透明的,通过监听器我们可以知道web容器里面发生的任何事情。

ServletContextListener

常用的监听器有

ServletContextListener:用来监听web应用的启动和关闭

contextInitialized(ServletContextEvent arg0) 当web应用被启动的时候执行

contextDestroyed(ServletContextEvent arg0)当web应用被启动关闭时执行

监听的配置有两种方式:

第一种是web注解的方式

第二种是在xml文件里面配置

 1 package com.huayu.listener;
 2
 3 import javax.servlet.ServletContextEvent;
 4 import javax.servlet.ServletContextListener;
 5
 6 public class Listener1 implements ServletContextListener{
 7
 8     @Override
 9     public void contextDestroyed(ServletContextEvent arg0) {
10         // TODO Auto-generated method stub
11         System.out.println("=========应用关闭============");
12     }
13
14     @Override
15     public void contextInitialized(ServletContextEvent arg0) {
16         // TODO Auto-generated method stub
17         System.out.println("===应用启动=========");
18     }
19
20 }

web.xml

1  <listener>
2           <listener-class>com.huayu.listener.Listener1</listener-class>
3   </listener>

下面演示:

写一个ServletContextListener监听器,当web应用启动是链接orcl数据库,在jsp页面中将emp表里面的数据以表格的形式打印出来,当web应用关闭时断开与orcl数据库的链接

  

 1 package com.huayu.listener;
 2
 3 import java.sql.Connection;
 4 import java.sql.DriverManager;
 5 import java.sql.PreparedStatement;
 6 import java.sql.SQLException;
 7
 8 import javax.servlet.ServletContext;
 9 import javax.servlet.ServletContextEvent;
10 import javax.servlet.ServletContextListener;
11
12 public class Listener1 implements ServletContextListener{
13
14     @Override
15     public void contextDestroyed(ServletContextEvent arg0) {
16
17         ServletContext application=arg0.getServletContext();
18         Connection conn=(Connection) application.getAttribute("connoracle");
19         if(conn!=null){
20
21             try {
22                 conn.close();
23             } catch (SQLException e) {
24                 // TODO Auto-generated catch block
25                 e.printStackTrace();
26             }
27         }
28
29     }
30
31     @Override
32     public void contextInitialized(ServletContextEvent arg0) {
33         // TODO Auto-generated method stub
34         String driver="oracle.jdbc.driver.OracleDriver";
35         String url="jdbc:oracle:thin:@localhost:1521:orcl";
36         String user="scott";
37         String pass="ztoracle";
38
39         ServletContext application=arg0.getServletContext();
40
41         try {
42             Class.forName(driver);
43             Connection conn=DriverManager.getConnection(url, user, pass);
44             application.setAttribute("connoracle", conn);
45
46         } catch (Exception e) {
47             throw new RuntimeException();
48
49
50         }
51
52     }
53
54 }
 1 <%@page import="java.sql.ResultSetMetaData"%>
 2 <%@page import="java.sql.ResultSet"%>
 3 <%@page import="java.sql.PreparedStatement"%>
 4 <%@page import="java.sql.Connection"%>
 5 <%@ page language="java" import="java.util.*" pageEncoding="GBK" contentType="text/html; charset=GBK"%>
 6 <%
 7 String path = request.getContextPath();
 8 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
 9 %>
10
11 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
12 <html>
13   <head>
14     <base href="<%=basePath%>">
15
16     <title>My JSP ‘index.jsp‘ starting page</title>
17     <meta http-equiv="pragma" content="no-cache">
18     <meta http-equiv="cache-control" content="no-cache">
19     <meta http-equiv="expires" content="0">
20     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
21     <meta http-equiv="description" content="This is my page">
22     <!--
23     <link rel="stylesheet" type="text/css" href="styles.css">
24     -->
25   </head>
26
27   <body>
28     <%
29         Connection conn=(Connection)application.getAttribute("connoracle");
30         PreparedStatement ps=conn.prepareStatement("select * from emp");
31         ResultSet rs=ps.executeQuery();
32         ResultSetMetaData rsm=rs.getMetaData();
33         int count=rsm.getColumnCount();
34      %>
35     <table border="1">
36         <%
37             while(rs.next()){
38          %>
39         <tr>
40             <%
41                 for(int i=0;i<count;i++){
42
43              %>
44             <td>
45             <%
46               rs.getString(i+1);
47              %>
48
49
50             </td>
51             <% } %>
52         </tr>
53         <%} %>
54     </table>
55
56   </body>
57 </html>
时间: 2024-12-18 00:14:09

JSP之监听器Listener(一)————————ServletContextListener的相关文章

JSP之监听器Listener(二)

ServletContextAttributeListener 用于监听ServletContext也就是application范围内属性的变化,实现该结构主要重写三个方法 attributeAdded()方法:当向application中添加参数的时候会自动调用 attributeRemoved()方法:当把application中的参数移除的时候调用 attributeReplaced()方法:当修改application中的参数时调用 1 package com.huayu.listene

Javaweb基础---&gt;监听器listener(转发)

JavaWeb中的监听器 1.基本概念 JavaWeb中的监听器是Servlet规范中定义的一种特殊类,它用于监听web应用程序中的ServletContext, HttpSession和 ServletRequest等域对象的创建与销毁事件,以及监听这些域对象中的属性发生修改的事件. 2.Servlet监听器的分类 在Servlet规范中定义了多种类型的监听器,它们用于监听的事件源分别为ServletContext,HttpSession和ServletRequest这三个域对象 Servle

深入分析JavaWeb Item38 -- 监听器(Listener)快速学习

一.监听器介绍 1.1.监听器的概念 监听器是一个专门用于对其他对象身上发生的事件或状态改变进行监听和相应处理的对象,当被监视的对象发生情况时,立即采取相应的行动.监听器其实就是一个实现特定接口的普通java程序,这个程序专门用于监听另一个java对象的方法调用或属性改变,当被监听对象发生上述事件后,监听器某个方法立即被执行. 1.2.监听器案例--监听window窗口的事件监听器 package me.gacl.listener.demo; import java.awt.Frame; imp

javaWeb学习总结(11)- 监听器(Listener)学习

一.监听器介绍 1.1.监听器的概念 监听器是一个专门用于对其他对象身上发生的事件或状态改变进行监听和相应处理的对象,当被监视的对象发生情况时,立即采取相应的行动.监听器其 实就是一个实现特定接口的普通java程序,这个程序专门用于监听另一个java对象的方法调用或属性改变,当被监听对象发生上述事件后,监听器某个方法 立即被执行. 1.2.监听器案例——监听window窗口的事件监听器 package me.gacl.listener.demo; import java.awt.Frame; i

监听器(Listener)学习(一)

一.监听器介绍 1.1.监听器的概念 监听器是一个专门用于对其他对象身上发生的事件或状态改变进行监听和相应处理的对象,当被监视的对象发生情况时,立即采取相应的行动.监听器其实就是一个实现特定接口的普通java程序,这个程序专门用于监听另一个java对象的方法调用或属性改变,当被监听对象发生上述事件后,监听器某个方法立即被执行. 1.2.监听器案例--监听window窗口的事件监听器 package com.listener.demo; import java.awt.Frame; import

【Listener】利用监听器Listener以MVC的思想通过JSP+Servlet+JDBC完成在线用户列表的输出

Servlet,监听器Listener与<[Filter]拦截器Filter>(点击打开链接)是JSP的三大核心组件,实际上监听器Listener相当于数据库里面的触发器,一旦用户触发了某种行为,则可以通过相关的Java文件执行相应的程序.用户在浏览网页的过程中,主要有打开浏览器的动作,对应的行为是Session的创建,可是,用户关闭浏览器的动作,并不是对应Session的消失,因此对于Session的消失我们意义不大:访问任意网页的动作,对应的行为是request请求的创建,request的

servlet监听器Listener(理论+例子)

Listener采用了观察者模式(24种模式之一),Listener是servlet的监听器,他可以监听客户端的请求.服务器端的操作等, 通过监听器,可以自动激发一些操作.比如:监听在线用户数量 当增加一个HttpSession时,就会激发sessinCreated(HttpSessionEvent sce)方法,这样就可以给在线人数+1了. 常见的监听器接口: ServletContextAttributeListener 监听对servletContext属性的操作,比如删除.增加.修改属性

Servlet3.0学习总结(四)——使用注解标注监听器(Listener)

Servlet3.0学习总结(四)——使用注解标注监听器(Listener) Servlet3.0提供@WebListener注解将一个实现了特定监听器接口的类定义为监听器,这样我们在web应用中使用监听器时,也不再需要在web.xml文件中配置监听器的相关描述信息了. 下面我们来创建一个监听器,体验一下使用@WebListener注解标注监听器,如下所示: 监听器的代码如下: 1 package me.gacl.web.listener; 2 3 import javax.servlet.Se

过滤器(Filter)、拦截器(Interceptor)、监听器(Listener)

一.Filter 过滤器 1.简介 Filter也称之为过滤器,它是Servlet技术中最实用的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能.例如实现URL级别的权限访问控制.过滤敏感词汇.压缩响应信息等一些高级功能. 它主要用于对用户请求进行预处理,也可以对HttpServletResponse 进行后处理.使用Filter 的完整流程:Filter 对用户请求