引自csdn -监听器篇:https://blog.csdn.net/u011024652/article/details/52293932/
监听器的使用:
* 作用:
* 监听作用域对象:request session application 的创建,销毁和内容的改变
* 使用:
* 创建一个实现了指定接口的java 类
* 监听 request-----> ServletRequestListener 监听request 对象的创建和销毁
* requestInitialized(ServletRequestEvent arg0) //创建
* requestDestroyed(ServletRequestEvent arg0) //销毁
* 注意:
* 形参可以获取被监听的request 对象
* arg0.getServletRequest();
* 监听 request---------> ServletRequestAttributeListener 监听request 作用域数据的变更
* attributeAdded(ServletRequestAttributeEvent arg0) //增加
* attributeRemoved(ServletRequestAttributeEvent arg0) //移除
* attributeReplaced(ServletRequestAttributeEvent arg0) //修改
* 注意:
* 形参可以获取被监听的数据:
* arg0.getName() ; 获取监听的键,
* arg0.getValue(); 获取监听的值;
* 在web.xml 中配置 监听器类
*
* 监听session----->HttpSessionListener 监听session 的 创建和销毁
* sessionCreated(HttpSessionEvent arg0) //创建
* sessionDestroyed(HttpSessionEvent arg0) //销毁
* 注意:
* 形参可以获取被监听的session 对象;
* arg0.getSession();
* 监听session----->HttpSessionAttributeListener 监听session 数据的变更
* attributeAdded(HttpSessionBindingEvent arg0)
* attributeRemoved(HttpSessionBindingEvent arg0)
* attributeReplaced(HttpSessionBindingEvent arg0)
* 注意:
* 形参可以获取被监听的数据
* arg0.getName() age0.getValue();
*
* 监听application------>ServletContextListener
* contextDestroyed(ServletContextEvent arg0) //销毁: 服务器关闭
contextInitialized(ServletContextEvent arg0) //创建: 服务器启动
注意:
形参可以获取当前application 对象。
arg0.getServletContext();
监听application------>ServletContextAttributeListener 监听application 数据的变更
attributeAdded(ServletContextAttributeEvent arg0)
attributeRemoved(ServletContextAttributeEvent arg0)
attributeReplaced(ServletContextAttributeEvent arg0)
注意:
* 形参可以获取当前监听的数据:
* arg0.getName() ; 获取监听的键,
* arg0.getValue(); 获取监听的值;
在web.xml 中配置监听器类
<listener>
<listener-class>com.wxh.listener.MyListener</listener-class>
</listener>
*
testServlet:
package com.wxh.servlet;
import java.io.IOException;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class TestServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
//获取请求信息
//处理请求信息
req.setAttribute("str", "request 中增加了数据");
HttpSession hs = req.getSession();
hs.setAttribute("str", "session 中增加数据");
hs.invalidate();
ServletContext sc = this.getServletContext();
sc.setAttribute("str", "application 总增加了数据");
//响应处理结果
resp.getWriter().write("this is listener");
}
}
myListener:
import javax.servlet.ServletContextAttributeEvent;
import javax.servlet.ServletContextAttributeListener;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.ServletRequestAttributeEvent;
import javax.servlet.ServletRequestAttributeListener;
import javax.servlet.ServletRequestEvent;
import javax.servlet.ServletRequestListener;
import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionBindingEvent;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
public class MyListener implements ServletRequestListener,ServletRequestAttributeListener,HttpSessionListener,HttpSessionAttributeListener,ServletContextListener,ServletContextAttributeListener {
//request 销毁
public void requestDestroyed(ServletRequestEvent arg0) {
// TODO Auto-generated method stub
System.out.println("我被销毁了");
}
//request 创建
public void requestInitialized(ServletRequestEvent arg0) {
// TODO Auto-generated method stub
System.out.println("我被创建了");
}
public void attributeAdded(ServletRequestAttributeEvent arg0) {
// TODO Auto-generated method stub
System.out.println("request作用域中增加了一条数据-"+arg0.getName()+":"+arg0.getValue());
}
public void attributeRemoved(ServletRequestAttributeEvent arg0) {
// TODO Auto-generated method stub
}
public void attributeReplaced(ServletRequestAttributeEvent arg0) {
// TODO Auto-generated method stub
}
//-------------------------------------------------------------------------------------------------
//监听session 的创建
public void sessionCreated(HttpSessionEvent arg0) {
// TODO Auto-generated method stub
System.out.println("session被创建了");
}
//监听session 的销毁
public void sessionDestroyed(HttpSessionEvent arg0) {
// TODO Auto-generated method stub
System.out.println("session被销毁了");
}
//监听session 数据的变更
public void attributeAdded(HttpSessionBindingEvent arg0) {
// TODO Auto-generated method stub
System.out.println("session中增加了一条数据-"+arg0.getName()+":"+arg0.getValue());
}
public void attributeRemoved(HttpSessionBindingEvent arg0) {
// TODO Auto-generated method stub
}
public void attributeReplaced(HttpSessionBindingEvent arg0) {
// TODO Auto-generated method stub
}
//-------------------------------------------------------------------------------------------------
public void contextDestroyed(ServletContextEvent arg0) {
// TODO Auto-generated method stub
System.out.println("application 被销毁了");
}
public void contextInitialized(ServletContextEvent arg0) {
// TODO Auto-generated method stub
System.out.println("application 被创建了");
}
public void attributeAdded(ServletContextAttributeEvent arg0) {
// TODO Auto-generated method stub
System.out.println("application 中存取了数据--"+arg0.getName()+":"+arg0.getValue());
}
public void attributeRemoved(ServletContextAttributeEvent arg0) {
// TODO Auto-generated method stub
}
public void attributeReplaced(ServletContextAttributeEvent arg0) {
// TODO Auto-generated method stub
}
}
web.xml:
<listener>
<listener-class>com.wxh.listener.MyListener</listener-class>
</listener>