Three domains of listeners
First, the three domain object creation and destruction of listening:
1.ServletRequestListener:, send a request to create a client request to monitor the creation and destruction, after been sent for destruction.
2.HttpSessionListener: When listening session is created, destroyed when the session (session settings survival time or use session.invalidate () method) monitor.
3.ServletContextListener: listening (ie, when the web application starts) when the application is created, when the application listens destruction (ie, when the server shuts down the listener).
Second, the three domain object to add, modify, delete the attribute value monitor
1.ServletRequestAttributeListener
2.HttpSessionAttributeListener
3.ServletContextAttributeListener
three methods correspond to three of the following domain object attribute listening operation
@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());
}
Monitor steps:
1. Define the listener. Implementation requires listening event interface
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. Register listener
web.xml
<listener>
<listener-class>com.javaweb.listener.MyRequestAttrbuteListener</listener-class>
</listener>
3. Trigger Event
<body>
show.jsp
<%
request.setAttribute("username", "hahah");
request.setAttribute("username", "hehei");
request.removeAttribute("username");
%>
</body>
Session of object properties were listening to bind and unbind
1. Object class implements an interface HttpSessionBindingListener, but we do not need to register themselves to the listener.
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. Trigger Event
<%
session.setAttribute("stu", new Student(11,"aaa"));
session.removeAttribute("stu");
%>
Session object of activating and passivating
Activation: The object is written to the hard disk from the server.
Passivation: the object from the server to the disks.
Activation and passivation corresponds to deserialize and serialize objects, when we realize that all listeners must implement the Serializable interface. No need to register listener.
1. Define listener
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. Triggers
the activation of the trigger: The server reboots
passivation trigger: The server stopped