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>

 

posted @ 2015-12-01 20:57  逍遥鸣  阅读(495)  评论(0编辑  收藏  举报