• 监听事件Servlet监听器的那些事儿


    新手发帖,很多方面都是刚入门,有错误的地方请大家见谅,欢迎批评指正

          Servlet监听器对象可以在事件发生前、后做一些必要的处理,这就是监听器的意思地点了。那么罕见的监听器有哪些?在什么时候,怎么运用监听器呢?

        罕见的监听器接口:

        1.ServletContextAttributeListener:监听ServletContext的属性操作,如,添加、删除、修改

        
    2.ServletContextListener:        监听ServletContext,当创立的 时候触发contextInitialized(ServletContextEvent sce)事件;当销毁的时候触发contextDestroyed(ServletContextEvent sce)方法。contextDestroyed(ServletContextEvent sce)事件。

        
    3.HttpSessionListener:                监听HttpSession,当创立Session时,触发sessionCreated(SessionEvent se)事件;当Session销毁时,触发sessionRemoved(SessionEvent se)事件。

        
    4.HttpSessionAttributeListener:           监听HttpSession中属性的操作,增加属性,触发attributeAdded(HttpSessionBingdingEvent se)事件;删除属性,触发attributeRemoveded(HttpSessionBingdingEvent se)事件;重设HttpSession,触发attributeReplaced(HttpSessionBingdingEvent se)事件。

        

        实例加深懂得:

        实例1.使用监听器,实现在线人数的统计:

        OnlineCounter类,执行详细的人数增加或者增加的动作:

        

    public class

        OnlineCounter

        { private static long online =0; public static long getOnline(){ return online; } public static void raise(){ online++; } public static void reduce(){ online--; } }

        

        OnlineCounterListener

        

        ,实现HttpSessionListener接口:(在 sessionCreated和sessoinDestroyed方法中调用OnlineCounter的执行增加和增加的方法):

        

    import javax.servlet.http.HttpSessionEvent;
    import javax.servlet.http.HttpSessionListener;
    
    public class OnlineCounterListener implements HttpSessionListener{
    
    
    	public void sessionCreated(HttpSessionEvent hse){
    		OnlineCounter.raise();
    	}
    
    	public void sessoinDestroyed(HttpSessionEvent hse){
    
    		OnlineCounter.reduce();
    	}
    }

        

        配置web.xml 的<listener>节点:

        

    <listener>
    	<listener-class>sevletlistener.SecondListener</listener-class>
    </listener>

        

        每日一道理
    有些冷,有些凉,心中有些无奈,我一个人走在黑夜中,有些颤抖,身体瑟缩着,新也在抖动着,我看不清前方的路,何去何从,感觉迷茫,胸口有些闷,我环视了一下周围,无人的街头显得冷清,感到整个世界都要将我放弃。脚步彷徨之间,泪早已滴下……

        jsp显示人数:

    <%@ page import ="xxx.OnlineCounter"%>
    <%@= OnlineCounter.getOnline()%>
    
    退出会话(提供一个注销按钮):
    <form action ="exit.jsp" methd = post>
    
    	<input type =submit value="exit">
    </form>
    
    
    exit.jsp:<% session.invalidate();%>

        

        比较监听和数据库字段统计,省去了打开、关闭数据库的资源消耗

        

        实例2:监听器管理同享数据库连接:

        保证每新生成一个servlet context都市有一个可用的数据库连接,并且全部的连接对会在context关闭的时候随之关闭。

         MyConnectionManager:实现ServletContextListener接口的类:

        

    public class MyConnectionManager implements ServletContextListener{
    
    	public void contextInitiallized(ServletContextEvent e){
    
    		//创立数据库连接
    		Connection con =.......;
    		e.getServletContext().setAttribute("conn",con);		
    		
    	}
    
    	public void contextDestroyed(ServletContextEvent e){
    
    		Connect con =(Connection) e.getServletContext().getAttribute("con");
    		
    		try{
    
    			con.close();
    		}catch(SQLException ignored){
    
    		//关闭数据库连接
    		}
    	}
    
    
    }

        

        

        同样在web.xml中配置<listener>节点:

        

    <listener>
    	<listener-class>XXX.MyConnectionManager</listener-class>
    </listener>

        总结:

        通过上面两个例子,看出监听的本质就是一些事件;

        监听对于性能的影响,要看监听的频率和对象资源以及处理逻辑;

        通过监听可以提高系统的安全级别。

        

        

    文章结束给大家分享下程序员的一些笑话语录: 古鸽是一种搜索隐禽,在中国快绝迹了…初步的研究表明,古鸽的离去,很可能导致另一种长着熊爪,酷似古鸽,却又习性不同的猛禽类——犤毒鸟

    --------------------------------- 原创文章 By
    监听和事件
    ---------------------------------

  • 相关阅读:
    WPF中的brushes
    com中的线程模式(转)
    线程同步
    WPF线程
    应用程序管理(Application)
    WPF的继承结构树
    HTML技巧100例(一)
    多个网站共用一个空间的超值玩法
    用JavaScript实现浏览器地震效果
    HTML技巧100例(二)
  • 原文地址:https://www.cnblogs.com/xinyuyuanm/p/3111440.html
Copyright © 2020-2023  润新知