Eight Listener Servlet listener

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

Published 114 original articles · won praise 8 · views 5476

Guess you like

Origin blog.csdn.net/OVO_LQ_Start/article/details/104930277
Recommended