一、JavaWeb中的监听器
事件源:(三大域)
-
ServletContext
(1)生死监听:ServletContextListener,它有两个方法,一个在出生时调用,一个在死亡时调用
(2)属性监听:ServletContextAttributeListener,它有三个方法,一个在添加属性时调用,一个在改变属性时调用,一个在移除属性时调用
-
HttpSession
(1)生死监听: HttpSessionListener,它有两个方法,一个在出生时调用,一个在死亡时调用
(2)属性监听:HttpSessionAttributeListener,它有三个方法,一个在添加属性时调用,一个在改变属性时调用,一个在移除属性时调用 -
ServletRequest
(1)生死监听:ServletRequestListener,它有两个方法,一个在出生时调用,一个在死亡时调用
(2)属性监听:ServletRequestAttributeListener,它有三个方法,一个在添加属性时调用,一个在改变属性时调用,一个在移除属性时调用
JavaWeb中完成编写监听器只需要两步 -
编写一个监听器类:要求必须实现某个监听器接口
-
注册:在web.xml中进行配置(或者采用注解的方式来实现)
事件对象: -
ServletContextEvent:里面只有一个方法getServletContext
-
HttpSessionEvent:里面只有一个方法getHttpSession
-
ServletRequestEvent:里面有两个方法getServletContext和getServletRequest
二、Java实现一个监听器
就来实现一个ServletContext的属性监听器
(1)新建一个HttpServlet的继承类
@WebServlet(value = "/listener")
public class AServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
ServletContext servletContext = req.getServletContext();
servletContext.setAttribute("username","zhangsan");
}
}
当我们访问/listener对应的url时,往ServletContext添加一个名为username的属性
(2)新建一个ServletContextAttributeListener的属性监听器
@WebListener
public class AttributeListener implements ServletContextAttributeListener {
@Override
public void attributeAdded(ServletContextAttributeEvent scae) {
System.out.println("added a attribute named="+scae.getName()+" value="+scae.getValue());
}
}
地址栏输入对应的url,查看输出
这就是一个简单的监听器的实现了