八リスナーサーブレットリスナー

リスナーの三つのドメイン

まず、リスニングの3つのドメインオブジェクトの作成と破棄:
1.ServletRequestListenerは:,破壊のために送られた後、創造と破壊を監視するためのクライアントの要求を作成するための要求を送信します。
2.HttpSessionListener:リスニングセッションが作成され、セッション(セッション設定生存期間または使用はsession.invalidate()メソッド)モニターを破壊しました。
3.ServletContextListener:アプリケーションが破壊(すなわち、時にリスナーダウンサーバ閉まり)を聞くときに、アプリケーションが、作成されたリスニング(すなわち、Webアプリケーションが起動)。
第二に、追加、変更、属性値のモニターを削除するには、3つのドメインオブジェクト
1.ServletRequestAttributeListener
2.HttpSessionAttributeListener
3.ServletContextAttributeListener
次のドメインオブジェクト属性のリスニングの3つの動作に三つの方法の対応を

@Override
	public void attributeAdded(ServletRequestAttributeEvent arg0) {
		System.out.println("向request中添加属性"+arg0.getName()+"="+arg0.getValue());

	}

	@Override
	public void attributeRemoved(ServletRequestAttributeEvent arg0) {
		// TODO Auto-generated method stub
		System.out.println("从request中删除属性"+arg0.getName()+"="+arg0.getValue());

	}

	@Override
	public void attributeReplaced(ServletRequestAttributeEvent arg0) {
		// TODO Auto-generated method stub
		System.out.println("重置request中的属性"+arg0.getName()+"="+arg0.getValue());

	}

モニター手順:
1.リスナーを定義します。実装は、リスニングイベントインターフェイスが必要です
MyRequestAttrbuteListener.javaを

package com.javaweb.listener;

import javax.servlet.ServletRequestAttributeEvent;
import javax.servlet.ServletRequestAttributeListener;

public class MyRequestAttrbuteListener implements
		ServletRequestAttributeListener {

	@Override
	public void attributeAdded(ServletRequestAttributeEvent arg0) {
		System.out.println("向request中添加属性"+arg0.getName()+"="+arg0.getValue());

	}

	@Override
	public void attributeRemoved(ServletRequestAttributeEvent arg0) {
		// TODO Auto-generated method stub
		System.out.println("从request中删除属性"+arg0.getName()+"="+arg0.getValue());

	}

	@Override
	public void attributeReplaced(ServletRequestAttributeEvent arg0) {
		// TODO Auto-generated method stub
		System.out.println("重置request中的属性"+arg0.getName()+"="+arg0.getValue());

	}

}

2.登録リスナー
のweb.xml

<listener>
		<listener-class>com.javaweb.listener.MyRequestAttrbuteListener</listener-class>
	</listener>

3.トリガ・イベント

<body>
show.jsp
<%
	request.setAttribute("username", "hahah");
	request.setAttribute("username", "hehei");
	request.removeAttribute("username");
%>
</body>

オブジェクトプロパティのセッションは、バインドとアンバインドを聞いていました

1.オブジェクトのクラスが実装インタフェースHttpSessionBindingListenerをは、しかし、我々はリスナーに自分自身を登録する必要はありません。

package com.javaweb.beans;

import javax.servlet.http.HttpSessionBindingEvent;
import javax.servlet.http.HttpSessionBindingListener;

public class Student implements HttpSessionBindingListener{
	private int age;
	private String name;
	
	public Student() {
		super();
	}
	public Student(int age, String name) {
		super();
		this.age = age;
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	@Override
	public String toString() {
		return "Student [age=" + age + ", name=" + name + "]";
	}
	@Override
	public void valueBound(HttpSessionBindingEvent arg0) {
		// TODO Auto-generated method stub
		System.out.println("session 绑定对象"+arg0.getName()+"="+arg0.getValue());
	}

	@Override
	public void valueUnbound(HttpSessionBindingEvent arg0) {
		// TODO Auto-generated method stub
		System.out.println("session 解绑对象"+arg0.getName()+"="+arg0.getValue());
	}
	
	
}

2.トリガ・イベント

<%
	session.setAttribute("stu", new Student(11,"aaa"));
	session.removeAttribute("stu");
%>

活性化および不動態化のSessionオブジェクト

アクティベーション:オブジェクトは、サーバーからハードディスクに書き込まれます。
不動態化:ディスクに、サーバーからのオブジェクト。
我々は、すべてのリスナーがSerializableインタフェースを実装しなければならないことを認識したときに、オブジェクトをデシリアライズし、シリアル化するために活性化および不動態化対応。リスナーを登録する必要はありません。
リスナーの定義1.

package com.javaweb.beans;

import java.io.Serializable;

import javax.servlet.http.HttpSessionActivationListener;
import javax.servlet.http.HttpSessionBindingEvent;
import javax.servlet.http.HttpSessionBindingListener;
import javax.servlet.http.HttpSessionEvent;

public class Student implements HttpSessionActivationListener,Serializable{
	private int age;
	private String name;
	
	public Student() {
		super();
	}
	public Student(int age, String name) {
		super();
		this.age = age;
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	@Override
	public String toString() {
		return "Student [age=" + age + ", name=" + name + "]";
	}
	@Override
	public void sessionDidActivate(HttpSessionEvent arg0) {
		// TODO Auto-generated method stub
		System.out.println("对象活化");
	}
	@Override
	public void sessionWillPassivate(HttpSessionEvent arg0) {
		// TODO Auto-generated method stub
		System.out.println("对象将要钝化");
	}
	
	
}

2。トリガ
トリガの活性化:サーバーの再起動
パッシベーショントリガ:サーバーが停止

公開された114元の記事 ウォンの賞賛8 ビュー5476

おすすめ

転載: blog.csdn.net/OVO_LQ_Start/article/details/104930277