标签:监听器
在监听器的对象作用领域中一般涉及监听主体(监听器)、监听客体(事件源)、监听事件(事件)。
在警察监听小偷中,警察是监听器,小偷是事件源,偷东西是时间。
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