自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Servlet監(jiān)聽(tīng)器概念特點(diǎn)常用概述

開(kāi)發(fā) 后端
Servlet監(jiān)聽(tīng)器用于監(jiān)聽(tīng)一些重要事件的發(fā)生,Servlet監(jiān)聽(tīng)器對(duì)象可以在事情發(fā)生前、發(fā)生后可以做一些必要的處理。

Servlet監(jiān)聽(tīng)器監(jiān)聽(tīng)器概述

◆Listener是Servlet的監(jiān)聽(tīng)器

◆可以監(jiān)聽(tīng)客戶端的請(qǐng)求、服務(wù)端的操作等。

◆通過(guò)監(jiān)聽(tīng)器,可以自動(dòng)激發(fā)一些操作,如監(jiān)聽(tīng)在線用戶數(shù)量,當(dāng)增加一個(gè)HttpSession時(shí),給在線人數(shù)加1。

◆編寫監(jiān)聽(tīng)器需要實(shí)現(xiàn)相應(yīng)的接口

◆編寫完成后在web.xml文件中配置一下,就可以起作用了

◆可以在不修改現(xiàn)有系統(tǒng)基礎(chǔ)上,增加web應(yīng)用程序生命周期事件的跟蹤

常用的Servlet監(jiān)聽(tīng)器監(jiān)聽(tīng)接口

◆ServletContextAttributeListener

監(jiān)聽(tīng)對(duì)ServletContext屬性的操作,比如增加/刪除/修改

◆ServletContextListener

監(jiān)聽(tīng)ServletContext,當(dāng)創(chuàng)建ServletContext時(shí),激發(fā)contextInitialized(ServletContextEvent sce)方法;當(dāng)銷毀ServletContext時(shí),激發(fā)contextDestroyed(ServletContextEvent sce)方法。

◆HttpSessionListener

監(jiān)聽(tīng)HttpSession的操作。當(dāng)創(chuàng)建一個(gè)Session時(shí),激發(fā)session Created(SessionEvent se)方法;當(dāng)銷毀一個(gè)Session
時(shí),激發(fā)sessionDestroyed (HttpSessionEvent se)方法。

◆HttpSessionAttributeListener

監(jiān)聽(tīng)HttpSession中的屬性的操作。當(dāng)在Session增加一個(gè)屬性時(shí),激發(fā)attributeAdded(HttpSessionBindingEvent se) 方法;當(dāng)在Session刪除一個(gè)屬性時(shí),激發(fā)attributeRemoved(HttpSessionBindingEvent se)方法;當(dāng)在Session屬性被重新設(shè)置時(shí),激發(fā)attributeReplaced(HttpSessionBindingEvent se) 方法。

使用范例:

由Servlet監(jiān)聽(tīng)器管理共享數(shù)據(jù)庫(kù)連接

生命周期事件的一個(gè)實(shí)際應(yīng)用由context監(jiān)聽(tīng)器管理共享數(shù)據(jù)庫(kù)連接。在web.xml中如下定義監(jiān)聽(tīng)器:

  1. ﹤listener﹥  
  2.     ﹤listener-class﹥XXX.MyConnectionManager﹤/listener-class﹥  
  3. ﹤/listener﹥  


server創(chuàng)建監(jiān)聽(tīng)器的實(shí)例,接受事件并自動(dòng)判斷實(shí)現(xiàn)監(jiān)聽(tīng)器接口的類型。要記住的是由于監(jiān)聽(tīng)器是配置在部署描述符web.xml中,所以不需要改變?nèi)魏未a就可以添加新的監(jiān)聽(tīng)器。

  1. public class MyConnectionManager implements ServletContextListener{    
  2.   public void contextInitialized(ServletContextEvent e) {   
  3.         Connection con = // create connection   
  4.         e.getServletContext().setAttribute("con", con);   
  5.     }    
  6.    public void contextDestroyed(ServletContextEvent e) {   
  7.         Connection con = (Connection) e.getServletContext().getAttribute("con");   
  8.         try {  
  9.           con.close();   
  10.         }   
  11.        catch (SQLException ignored) { } // close connection   
  12.     }   
  13. }   

Servlet監(jiān)聽(tīng)器保證每新生成一個(gè)servlet context都會(huì)有一個(gè)可用的數(shù)據(jù)庫(kù)連接,并且所有的連接對(duì)會(huì)在context關(guān)閉的時(shí)候隨之關(guān)閉。

計(jì)算在線用戶數(shù)量的Linstener

(1)Package xxx;

  1. public class OnlineCounter {    
  2.    private static long online = 0;       
  3.    public static long getOnline(){  
  4.       return online;  
  5.     }  
  6.     public static void raise(){   
  7.        online++;  
  8.     }  
  9.     public static void reduce(){   
  10.        online--;   
  11.    }  
  12. }  
  1. import javax.servlet.http.HttpSessionEvent;  
  2. import javax.servlet.http.HttpSessionListener;  
  3.  
  4. public class OnlineCounterListener implements HttpSessionListener{  
  5.     public void sessionCreated(HttpSessionEvent hse) {   
  6.         OnlineCounter.raise();    
  7.     }   
  8.    public void sessionDestroyed(HttpSessionEvent hse){    
  9.         OnlineCounter.reduce();  
  10.     }   
  11.  }  

在需要顯示在線人數(shù)的JSP中可是使用目前在線人數(shù):

  1. ﹤%@ page import=“xxx.OnlineCounter" %﹥  
  2. ﹤%=OnlineCounter.getOnline()%﹥ 

退出會(huì)話(可以給用戶提供一個(gè)注銷按鈕):

  1. ﹤form action="exit.jsp" method=post﹥   
  2.   ﹤input type=submit value="exit"﹥   
  3. ﹤/form﹥  

exit.jsp: ﹤%session.invalidate() ;%﹥

在web.xml中加入:

  1. ﹤listener﹥   
  2.   ﹤listener-class﹥servletlistener111111.SecondListener﹤/listener-class﹥  
  3. ﹤/listener﹥ 

Servlet監(jiān)聽(tīng)器怎么樣,就是這么簡(jiǎn)單,不用對(duì)現(xiàn)有代碼做任何的修改。趕緊試試吧!

【編輯推薦】

  1. 什么是Servlet以及常用Servlet API有哪些
  2. Java Servlets(JSP)開(kāi)發(fā)環(huán)境
  3. 開(kāi)發(fā)JSP HTTP服務(wù)器
  4. Servlet和JSP路徑詳細(xì)介紹
  5. JSP和Servlet中的幾個(gè)編碼的作用及原理
責(zé)任編輯:仲衡 來(lái)源: 編程入門網(wǎng)
相關(guān)推薦

2009-07-08 17:39:23

Servlet監(jiān)聽(tīng)器

2011-03-21 16:21:49

Oracle監(jiān)聽(tīng)口令監(jiān)聽(tīng)器

2009-09-27 17:46:22

Hibernate監(jiān)聽(tīng)

2009-07-06 13:02:49

Servlet過(guò)濾器

2011-05-16 10:14:11

Hibernate

2009-11-09 10:03:09

WCF通道監(jiān)聽(tīng)器

2010-02-22 15:06:31

WCF信道監(jiān)聽(tīng)器

2023-01-06 08:55:00

2011-06-01 14:55:24

Android Service 監(jiān)聽(tīng)器

2010-01-13 09:49:09

注釋監(jiān)聽(tīng)器Listener

2009-01-03 13:37:26

Oracle監(jiān)聽(tīng)器Oracle服務(wù)器Oracle網(wǎng)絡(luò)配置

2010-04-23 18:00:31

2009-11-18 18:28:27

Oracle監(jiān)聽(tīng)器

2012-02-03 13:27:16

2010-08-09 11:06:01

Flex事件機(jī)制

2010-04-23 10:13:18

Oracle監(jiān)聽(tīng)

2010-04-19 15:38:10

2009-07-06 09:03:10

Servlet定義

2020-04-20 11:09:49

過(guò)濾器監(jiān)聽(tīng)器 Web

2014-07-14 13:03:26

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)