リスナーの三つのドメイン
まず、リスニングの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。トリガ
トリガの活性化:サーバーの再起動
パッシベーショントリガ:サーバーが停止