JavaWeb——监听器

监听器介绍

  • 监听器(Listener) 是J2EE Servlet模块下的组件

  • Listener的作用对Web应用对象的行为进行监控

  • 通过Listener监听自动触发指定的功能代码

1、Listener 监听器它是 JavaWeb 的三大组件之一。JavaWeb 的三大组件分别是:Servlet 程序、Filter 过滤器、Listener 监 听器。

2、Listener 它是 JavaEE 的规范,就是接口

3、监听器的作用是,监听某种事物的变化。然后通过回调函数,反馈给客户(程序)去做一些相应的处理。

三种监听对象

  • ServletContext -对全局ServletContext及其属性进行监听

  • HttpSession -对用户会话及其属性操作进行监听

  • ServletRequest -对请求及属性操作进行监听

第一个监听器

开发监听器三要素

  • 实现XxxListener接口,不同接口对应不同监听对象

  • 实现每个接口中独有的方法,实现触发监听的后续操作

  • 在web.xml中配置< listener>使监听器生效

public class FirstListener implements ServletContextlistener {
    @Override
    public void contextInitialized (ServletContextEvent sce) {
    	// TODO Auto-generated method stub
        System.out.println("ServletContext已初始化"),
        
    }
    @Override
    public void contextDestroyed (ServletContextEvent sce) {
    	// TODO Auto-generated method stub
        System.out.println ("ServletContext已销毁"),
    }
}

xml.web中编写监听器对应的类是哪个

<listener>
	<1istener-class>com.imooc.listener.FirstListener</listener-class>
</listener>

注解形式:

@WebListener
public class FirstListener implements ServletContextlistener {
    @Override
    public void contextInitialized (ServletContextEvent sce) {
    	// TODO Auto-generated method stub
        System.out.println("ServletContext已初始化"),
        
    }
    @Override
    public void contextDestroyed (ServletContextEvent sce) {
    	// TODO Auto-generated method stub
        System.out.println ("ServletContext已销毁"),
    }
}

内置对象监听器接口

  • ServletContextListener -监听ServletContext对象创建、销毁等操作

  • HttpSessionListener -监听HttpSession对象创建、销毁等操作

  • ServletRequestListener -监听HttpServletRequest对象创建、销毁等

public class FirstListener implements ServletContextlistener,HttpSessionListener,ServletRequestListener {
    @Override
    public void contextInitialized(ServletContextEvent sce) {
    	// TODO Auto-generated method stub
        System.out.println("ServletContext已初始化"),
    }
    @Override
    public void contextDestroyed(ServletContextEvent sce) {
    	// TODO Auto-generated method stub
        System.out.println ("ServletContext已销毁");
    }
    
    @override
	public void sessionCreated(HttpSessionEvent se) {
		HttpSession session = se.getSession();
        // TODO Auto-generated method stub
        system.out.println ("Session已被创建,SessionId:" + session.getId());
	}
    @averride
    public void sessionDestroyed(HttpSessionEvent se)(
		// TODO Auto-generated method stub
        System.out.println ("Session已销毁");
	}
        
        @override
        public void requestDestroyed (ServletRequestEvent sre) {
        // TODO Auto-generated method stub
        System.out.println ("Request已销毁");
    }
        @Override
        public void requestInitialized (ServletRequestEvent sre) {
        ServletRequest request = (HttpServletRequest) sre.getServletRequest() ;
        // TODO” Auto-generated method stub
        system.out.println("HttpServletRequest已被创建,uri:" + request .getRequestURI());   
    }

属性监听接口

  • ServletContextAttributeListener -监听全局属性操作

  • HttpSessionAttributeListener-监听用户会话属性操作

  • ServletRequestAttributeListener -监听请求属性操作

Servlet:

public class test extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.getWriter().println("Hello World!") ;
        request.getServletContext().setAttribute ("sc-attr1", "sc-attr-val");
        request.getSession().setAttribute("session-attr1", "session-attr-val");
        request. setAttribute ("request-attr1","request-attr-value1") ;
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req,resp);
    }
}

Listener:

@WebListener
public class WebAttributeListener implements ServletContextAttributeListener, HttpSessionAttributeListener, ServletRequestAttributeListener {

    public void attributeAdded(ServletContextAttributeEvent event) {
        System.out.println("ServletContext新增属性:"+event.getName()+"->"+event.getValue());
    }

    public void attributeRemoved(ServletContextAttributeEvent event) {

    }

    public void attributeReplaced(ServletContextAttributeEvent event) {

    }


    public void attributeAdded(ServletRequestAttributeEvent event) {
        System.out.println("ServletRequest新增属性:"+event.getName()+"->"+event.getValue());
    }

    public void attributeRemoved(ServletRequestAttributeEvent event) {
        
    }

    public void attributeReplaced(ServletRequestAttributeEvent event) {

    }


    public void attributeAdded(HttpSessionBindingEvent event) {
        System.out.println("HttpSession新增属性:"+event.getName()+"->"+event.getValue());
    }

    public void attributeRemoved(HttpSessionBindingEvent event) {

    }

    public void attributeReplaced(HttpSessionBindingEvent event) {

    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值