java-监听器的简单使用
概念:
Servlet监听器是servlet规范中的定义的一种条特殊类,用于监听servletContext,httpSession和servletRquest等作用域对象的创建销毁事件及修改事件。
概念图:
监听对象:
request,session,application
监听内容:
创建,销毁,属性改变事件
下面我们用代码创建一个监听器 例:
MyListener监听器类:
/**
* 监听器类的创建和使用
* 在web/xml文件中配置监听器
* ServletRequestListener 监听request对象的创建和销毁
* ServletRequestAttributeListener 监听request对象的作用域数据变化
* @Description: TODO
* @CreateTime: 2020年3月8日 下午9:22:27
* @author: yanglihu
*/
public class MyListener implements ServletRequestListener,ServletRequestAttributeListener,
HttpSessionListener,HttpSessionAttributeListener,
ServletContextListener,ServletContextAttributeListener{
//=========监听request对象的初始化和销毁============================== ===
@Override
public void requestDestroyed(ServletRequestEvent sre) {
System.out.println("我被销毁了。。。。");
}
@Override
public void requestInitialized(ServletRequestEvent sre) {
System.out.println("我被创建了。。。。");
}
//--------监听request对象的数据变化------------------------------------
@Override
public void attributeAdded(ServletRequestAttributeEvent srea) {
System.out.println("request添加数据了:"+srea.getName()+"--"+srea.getValue());
}
@Override
public void attributeRemoved(ServletRequestAttributeEvent srea) {
// TODO Auto-generated method stub
}
@Override
public void attributeReplaced(ServletRequestAttributeEvent srea) {
// TODO Auto-generated method stub
}
//----------监听session对象的初始化和销毁-------------------------------
@Override
public void sessionCreated(HttpSessionEvent se) {
System.out.println("监听session创建了。。。");
}
@Override
public void sessionDestroyed(HttpSessionEvent se) {
System.out.println("监听session被销毁了。。。");
}
//------------监听session对象的数据的变化-------------------------------
@Override
public void attributeAdded(HttpSessionBindingEvent arg0) {
}
@Override
public void attributeRemoved(HttpSessionBindingEvent arg0) {
}
@Override
public void attributeReplaced(HttpSessionBindingEvent arg0) {
}
//------------监听application对象的初始化和销毁------------------------
@Override
public void contextDestroyed(ServletContextEvent arg0) {
}
@Override
public void contextInitialized(ServletContextEvent arg0) {
}
//------------监听application对象的数据变化---------------------------
@Override
public void attributeAdded(ServletContextAttributeEvent arg0) {
}
@Override
public void attributeRemoved(ServletContextAttributeEvent arg0) {
}
@Override
public void attributeReplaced(ServletContextAttributeEvent arg0) {
}
}
web.xml中配置:
<!--设置监听器 -->
<listener>
<listener-class>com.yang.listener.MyListener</listener-class>
</listener>
注解版:在MyListener监听器类上面用上@WebListener 就不需要在web.xml中配置了
创建测试serlvet
@WebServlet("/listener")
public class TestServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
//添加request数据
req.setAttribute("str", "监听器学习。。");
//创建session对象添加数据
HttpSession hs=req.getSession();
hs.setAttribute("str","session添加数据");
//返回html页面显示
resp.getWriter().write("我准备好了学习监听器。。");
}
}