标签:监听器
在监听器的对象作用领域中一般涉及监听主体(监听器)、监听客体(事件源)、监听事件(事件)。
在警察监听小偷中,警察是监听器,小偷是事件源,偷东西是时间。
JavaWeb中监听器的事件源(ServletContext、HttpSession、ServletRequest、JavaBean)
1、ServletContext
2、HttpSession
3、ServletReques
4、JaveBean
事件源为域对象的监听器的实现:
public class MyServletContextListener implements
ServletContextListener,HttpSessionListener,ServletRequestListener {
public void contextInitialized(ServletContextEvent sce) {
System.out.println("ServletContext创建了...");
}
public void contextDestroyed(ServletContextEvent sce) {
System.out.println("ServletContext销毁了...");
}
public void sessionCreated(HttpSessionEvent se) {
System.out.println("HttpSession创建了...");
}
public void sessionDestroyed(HttpSessionEvent se) {
System.out.println("HttpSession销毁了...");
}
public void requestDestroyed(ServletRequestEvent sre) {
System.out.println("ServletRequest创建了...");
}
public void requestInitialized(ServletRequestEvent sre) {
System.out.println("ServletRequest销毁了...");
}
}配置web.xml<listener> <listener-class>cn.edu.jxau.MyServletContextListener</listener-class> </listener>
public class Student implements HttpSessionBindingListener {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public void valueBound(HttpSessionBindingEvent event) {
System.out.println("Student对象保存到了Session中");
}
public void valueUnbound(HttpSessionBindingEvent event) {
System.out.println("Student对象从Session中移除了");
}
}当Student加到seesion中时,服务器自动调用valueBound( )方法,<Context>
<Manager className="org.apache.catalina.session.PersistentManager" maxIdleSwap="1" >
<Store className="org.apache.catalina.session.FileStore" directory="mysession" />
</Manager>
</Context>public class User implements HttpSessionActivationListener,Serializable {
public void sessionDidActivate(HttpSessionEvent arg0) {
System.out.println("活化了.....从硬盘反序列化到内存");
}
public void sessionWillPassivate(HttpSessionEvent arg0) {
System.out.println("钝化了.....序列化到硬盘");
}
}jsp<%
Object user = session.getAttribute("user");
if(user==null){
user = new User();
session.setAttribute("user", user);
out.println("创建了一个User对象:"+user+",并放入session当中");
}else{
out.println("从session中取出了User对象:"+user);
}
%>往session中放了User对象之后,关闭服务器时,会调用监听器的sessionWillPassivate()方法序列化到硬盘。出现如下图所示,表示成功钝化:标签:监听器
原文地址:http://blog.csdn.net/u011767054/article/details/40987697