监听器俗称监听Servlet。主要的功能是负责监听Web的各种操作,当相关的事件触发
之后将产生事件,并对此事件进行处理。在Web中可以对request、session、application
属性进行监听操作。
一.对application监听
ApplicationListener:
package com.zyy.listener;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
public class ApplicationListener implements ServletContextListener {
public void contextDestroyed(ServletContextEvent event) {
System.out.println("*************************Application销毁:"
+ event.getServletContext().getContextPath());
}
public void contextInitialized(ServletContextEvent event) {
System.out.println("***************************Application初始化:"
+ event.getServletContext().getContextPath());
}
}
web.xml:
<listener>
<listener-class>com.zyy.listener.ApplicationListener</listener-class>
</listener>
ApplicationAttributeListener:
package com.zyy.listener;
import javax.servlet.ServletContextAttributeEvent;
import javax.servlet.ServletContextAttributeListener;
public class ApplicationAttributeListener implements
ServletContextAttributeListener {
public void attributeAdded(ServletContextAttributeEvent event) {
System.out.println("Application增加属性:" + " name = " + event.getName()
+ " ,value = " + event.getValue());
}
public void attributeRemoved(ServletContextAttributeEvent event) {
System.out.println("Application删除属性:" + " name = " + event.getName()
+ " ,value = " + event.getValue());
}
public void attributeReplaced(ServletContextAttributeEvent event) {
System.out.println("Application更新属性:" + " name = " + event.getName()
+ " ,value = " + event.getValue());
}
}
web.xml:
<listener>
<listener-class>com.zyy.listener.ApplicationAttributeListener</listener-class>
</listener>
测试代码:
<%
this.getServletContext().setAttribute("CaMnter", "Save you from anything 07") ;
this.getServletContext().setAttribute("CaMnter", "Save you from anything 07 forever") ;
this.getServletContext().removeAttribute("CaMnter") ;
%>
刷新好多次页面得到如下:
二.对session监听
SessionListener:
package com.zyy.listener;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
public class SessionListener implements HttpSessionListener {
public void sessionCreated(HttpSessionEvent event) {
System.out.println("***** Session创建 id:" + event.getSession().getId());
}
public void sessionDestroyed(HttpSessionEvent event) {
System.out.println("***** Session摧毁 id:" + event.getSession().getId());
}
}
web.xml:
<listener>
<listener-class>com.zyy.listener.SessionListener</listener-class>
</listener>
测试代码:
<%
session.invalidate();
%>
刷新好多次页面得到如下:
SessionAttributeListener:
package com.zyy.listener;
import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionBindingEvent;
public class SessionAttributeListener implements HttpSessionAttributeListener {
public void attributeAdded(HttpSessionBindingEvent event) {
System.out.println("Session增加属性:" + " name = " + event.getName()
+ " ,value = " + event.getValue());
}
public void attributeRemoved(HttpSessionBindingEvent event) {
System.out.println("Session删除属性:" + " name = " + event.getName()
+ " ,value = " + event.getValue());
}
public void attributeReplaced(HttpSessionBindingEvent event) {
System.out.println("Session更新属性:" + " name = " + event.getName()
+ " ,value = " + event.getValue());
}
}
web.xml:
<listener>
<listener-class>com.zyy.listener.SessionAttributeListener</listener-class>
</listener>
测试代码:
<%
session.setAttribute("CaMnter", "Save you from anything 07") ;
session.removeAttribute("CaMnter");
%>
刷新好多次页面得到如下:
三.对request监听
RequestListener:
package com.zyy.listener;
import javax.servlet.ServletRequestEvent;
import javax.servlet.ServletRequestListener;
public class RequestListener implements ServletRequestListener {
public void requestDestroyed(ServletRequestEvent event) {
System.out.println("Request 销毁:"
+ event.getServletRequest().getRemoteAddr()
+ event.getServletContext().getContextPath());
}
public void requestInitialized(ServletRequestEvent event) {
System.out.println("Request 初始化:"
+ event.getServletRequest().getRemoteAddr()
+ event.getServletContext().getContextPath());
}
}
web.xml:
<listener>
<listener-class>com.zyy.listener.RequestListener</listener-class>
</listener>
这个不需要测试代码,发布项目后,连接到即可。比如(http://127.0.0.1:8080/Listener)。
然后多次刷新后得到:
RequestAttributeListener:
package com.zyy.listener;
import javax.servlet.ServletRequestAttributeEvent;
import javax.servlet.ServletRequestAttributeListener;
public class RequestAttributeListener implements
ServletRequestAttributeListener {
public void attributeAdded(ServletRequestAttributeEvent event) {
System.out.println("Request增加属性:" + " name = " + event.getName()
+ " ,value = " + event.getValue());
}
public void attributeRemoved(ServletRequestAttributeEvent event) {
System.out.println("Request删除属性:" + " name = " + event.getName()
+ " ,value = " + event.getValue());
}
public void attributeReplaced(ServletRequestAttributeEvent event) {
System.out.println("Request更新属性:" + " name = " + event.getName()
+ " ,value = " + event.getValue());
}
}
web.xml:
<listener>
<listener-class>com.zyy.listener.RequestAttributeListener</listener-class>
</listener>
测试代码:
<%
request.setAttribute("CaMnter", "Save you from anything 07") ;
request.setAttribute("CaMnter", "Save you from anything 07 forever") ;
request.removeAttribute("CaMnter") ;
%>