1. 程式人生 > >java中的監聽事件

java中的監聽事件

java監聽器實現的類
1.ServletContextListener:對servlet上下文的建立和銷燬監聽
2.ServletContextAttributeListener:監聽servlet上下文屬性的新增、刪除和替換
3.HTTPSessionListener:對Session的建立和銷燬監聽
      session的銷燬有兩種情況:1). session超時(可以在web.xml中通過<session-config>/<session-timeout>標籤配置超時         時間);2). 通過呼叫session物件的invalidate()方法使session失效。
4.HttpSessionAttributeListener:對Session物件中屬性的新增、刪除和替換進行監聽
5.ServletRequestListener:對請求物件的初始化和銷燬進行監聽。
6.ServletRequestAttributeListener:對請求物件屬性的新增、刪除和替換進行監聽

上邊6個類是java給我提供的監聽的類,在使用時之間實現其介面,以及介面中方法即可
public class OnlinePerListener implements HttpSessionListener{

	private int userCounter = 0;
	@Override
	public void sessionCreated(HttpSessionEvent session) {
		userCounter++;
		session.getSession().setAttribute("userCounter", userCounter);
	}

	@Override
	public void sessionDestroyed(HttpSessionEvent session) {
		userCounter--;
		session.getSession().setAttribute("userCounter", userCounter);
	}

}


PS:無論是自己寫的監聽事件,還是使用java提供的監聽,都需要在web.xml中對其進行配置

<listener>
  	<listener-class>com.JavaListener.TestListener</listener-class>
</listener>


下邊寫自己實現監聽器:
監聽器設計主要涉及三個元件
1.事件源:即事件發生的源頭,例如一條狗,他可以發出動作。
2.事件物件:是對事件源的例項化,進而可以設定其相應的屬性
3.事件監聽器:用來監聽事件源發出的動作。
/*
 * 建立事件源
 */
public class Dog {
	//定義一個監聽器物件,用來接收傳遞進來的事件監聽器
	private DogListener listener;
	
	public void registListener(DogListener dogListener){
		this.listener=dogListener;
	}
	
	public void shout(){
		if(listener!=null){
			Even even = new Even(this);
			this.listener.doshout(even);
		}
		System.out.println("汪汪汪................");
	}
	
	public void watch(){
		if(listener!=null){
			Even even = new Even(this);
			this.listener.dowatch(even);
		}
		System.out.println("狗會看門..............");
	}
}
public class TestListener implements DogListener{
	public static void main(String[] args) {
		Dog dog = new Dog();
		dog.registListener(new TestListener());
		dog.shout();
		dog.watch();
	}

	@Override
	public void doshout(Even even) {
		//拿到事件源,可以進行操作
		Dog dog = even.getDog();
		
		System.out.println("叫之前的動作");
	}

	@Override
	public void dowatch(Even even) {
		System.out.println("看門之前的動作");
		
	}
}



相關推薦

關於AngularJs事件及髒迴圈的理解

這篇文章講解的很好,大家可以參考,地址如下: http://www.mamicode.com/info-detail-1508620.html(點選開啟連結) http://www.cnblogs.com/wupeng88/p/6530421.html(點選開啟連結)

java的key事件機制

com java.awt imp package 時間 ext javax .get pri package com.at221; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; im

java事件

java監聽器實現的類 1.ServletContextListener:對servlet上下文的建立和銷燬監聽 2.ServletContextAttributeListener:監聽servlet上下文屬性的新增、刪除和替換 3.HTTPSessionListener:

<Java>按鈕事件的實現方式

方式 log undle 必須 AC listen oncreate ava creat 一:事件處理機制要通過以下三個不同對象來實現: (1)事件源:事件發生的場所,通常為產生事件的組件。 (2)事件對象:封裝在組件上發生的特定事件。 (3)事件監聽對象:負責監聽事件源發

js/jQery的鍵盤事件觸發回車鍵位登入觸發教程及demo

js/jQery中的鍵盤監聽事件觸發回車鍵位登入觸發教程及demo 在我們專案的過程中經常會遇到需要鍵盤 來控制的事件,比如:登入、搜尋等,廢話不多說上程式碼!! 我這裡主要是做了兩個的監聽,一個是回車的,一個是通用複製的, 可以在判斷中寫入方法體來控制 <script

layer 在標題加點選事件

本文來源於網路,自己拼湊。謝謝博主們的熱情分享。 在layer的標題裡面設定一個id="conform" 給這個id一個點選的監聽事件 $(document).on('click','#conform',function(){ test(); }); 另外還需要設定屬性在la

ButterKnife之三:AdapterButterKnife核心常用功能使用(替代findviewbyid,替代OnClickListener以及繫結多個id事件

在上一篇“ButterKnife之一:Activity中ButterKnife核心常用功能使用(替代findviewbyid,替代OnClickListener以及繫結多個id監聽事件)”中對ButterKnife已經做了相對較詳細的介紹,本篇只對Adapter中ButterKnife使用的程式

ButterKnife之二:Fragment ButterKnife核心常用功能使用(替代findviewbyid,替代OnClickListener以及繫結多個id事件

在上一篇“ButterKnife之一:Activity中ButterKnife核心常用功能使用(替代findviewbyid,替代OnClickListener以及繫結多個id監聽事件)”中對ButterKnife已經做了相對較詳細的介紹,本篇只對Fragment 中ButterKnife使用的

ButterKnife之一:ActivityButterKnife核心常用功能使用(替代findviewbyid,替代OnClickListener以及繫結多個id事件

ButterKnife是一個註解類,ButterKnife開源框架以其強大的view繫結和click事件處理功能,大大減少程式碼量,節省開發時間,提高開發效率,而且ButterKnife在adapter中的使用也方便的處理了adapter中ViewHodler的繫結問題,下面就學習內容做簡單記錄

FragmentRecyclerView的使用解析,以及事件處理

RecyclerView是可以代替listview使用的新元件,個人感覺其主要特色:其介面卡adapter中,重寫的東西少了,頁面展示的效果跟加多了,比如可以在RecyclerView設定listview的顯示效果,也可以設定gridview的顯示效果,也可以設定瀑布流的顯示效果!下面程式碼主要

AndroidEdittext控制元件於鍵盤按下確認事件OnEditorActionListener

背景 Edittext作為一個常見控制元件,很多時候都有監聽鍵盤確認就執行指定邏輯的需求 實現 這個很簡單嘛,Edittext自帶有鍵盤按下事件監聽,就是OnEditorActionListener了,用就對了 問題 使用中發現,的確可以監聽鍵盤確認事

專案總結之 jquery,使用append增加新元素時,新增元素的繫結事件失效的解決辦法

$(“outerSelector”).on(“eventType”,“innerSelector”,function(){}); 舉例:如果在一個 中,通過append新增一個id="demo"的按鈕,常用的直接$(“Selector”).on(“eventType”,function

vue之在頁面鍵盤的Enter鍵來觸發某個按鈕事件

專案中得需求:給頁面某個按鈕繫結Enter鍵,但是按鈕不在form中,直接給按鈕繫結後此按鈕只有獲取了焦點按鍵才會觸發,顯然,一直保持按鈕獲取焦點是不現實得。所以通過查詢等,結合專案需求,完成了下面得程式碼,希望對大家有用,歡迎一起探討,Email:[email p

H5 頁面滾動事件,判斷滾動方向的方法

在做 H5 開發的時候,有時候需要監聽頁面的滾動的事件,根據頁面滾動方向的不同來進行不同的操作,通常是判斷頁面是向上滾動還是向下滾動,那麼怎麼判斷呢,只需要使用下面的區區幾十行程式碼即可。 //監聽頁

C# WPF視窗大小變化事件

C#中WPF框架下為了監聽視窗的大小變化,需要實現視窗的SizeChanged事件,具體做法如下: 首先需要在視窗建構函式中為SizeChanged繫結處理事件: public MainWindow(

Android如何在FragmentOnKeyDown、OnkeyUp事件

在螢幕上,有個Activity,在Activity上面有個Fragment,此時,當我們在螢幕中彈出一個覆蓋全屏,或者覆蓋一部分,剩下部分帶陰影的(Dialog)時候。我們的最上層View裡面拿不到OnKeyDown或者是OnKeyUp方法,怎麼辦呢? 可以在Dialog的onResu

Android自定義ScrollView的滑動事件

專案結構: 1.LazyScrollView類(自定義ScrollView) package android.zhh.com.myapplicationscrollview; /** * Created by sky on 2017/3/19. */ impor

JAVA之鍵盤,滑鼠事件

本案設計鍵盤按鈕,畫出一個簡易鍵盤, 通過按下,釋放鍵盤 滑鼠經過按鈕,滑鼠點選按鈕,滑鼠離開按鈕 詳細解釋了滑鼠鍵盤對應事件 先看一下鍵盤監聽介面的API void keyPressed(KeyEvent e) 按下鍵時呼叫。 void k

Vue檔案input輸入事件v-on:input

原文地址:http://blog.csdn.net/JaneLittle/article/details/72742225 oninput 事件在使用者輸入時觸發,菜鳥教程中的用法是: 但是在.vue中這樣寫是沒有作用的: <input type="t

Android自定義ScrollView的滑動事件,並在滑動時漸變標題欄背景顏色

效果圖 滑動前: 滑動中: 滑動到底部: 專案結構 ObservableScrollView package com.jukopro.titlebarcolor; import android.content.Context; import android.u