`
wanglu271991027
  • 浏览: 90619 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

关于监听器的设置

 
阅读更多

package com.sdjt.security;

//import jtml.manage.Setting;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletException;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionBindingEvent;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

import org.springframework.web.context.ContextLoaderListener;
import com.sdjt.bean.system.UserPO;
import com.sdjt.util.Constant;
//extends ContextLoaderListener implements HttpSessionListener,HttpSessionAttributeListener  {
//public class ListenerReq extends HttpServlet implements ServletContextListener,
public class ListenerReq extends ContextLoaderListener implements HttpSessionListener,
						HttpSessionAttributeListener {
	private  IcrmSessionContext  ircmSessionContent =  IcrmSessionContext.getInstance();
	
	private static int count = 0;

	private ServletContext context;


	private static List list = new ArrayList(); //在线用户列表

	private static Map map_menu = new HashMap();//菜单目录

	private static Map map = new HashMap();//登录人员列表
	
	private static Map mapSessionTime = new HashMap(); // session 创建的时间
	
	//private static Setting setting = new Setting();
	
	public static int[] sender_temp = null; // 上次的比较值
	
	public static int[] sender = null; // 控件的运行状态
	
	public static int[] sendercom = null; // 对应的控件后缀
	
	public static String senderExeName = "sdjtsender"; // 控件的进程前缀名称;后缀跟端口号
	
	public static String closerExeName = "closesender"; // 关闭的控件的进程前缀名称;后缀跟端口号
	
	public static String usecom = "1;"; // 使用的端口号;控件名称格式:1号端口sdjtsender1.exe
	
	public static String ProjectName = "sms"; // 项目名称(用于辨别数据库)
	
	public static String preNumberColor = "green";
	
	public static String preNumberCount = "0";
	
	public static String preNumberYe = "0";
	
	public static boolean check = false;
	
	public static String filePath = "";
	
	public void init() throws ServletException {
	}
	 private ServletConfig config;

	 // Init the servlet
	 final public void init(ServletConfig config) throws ServletException {
	   this.config = config;
	 }

	 final public ServletConfig getServletConfig() {
	   return config;
	 }
	 
	public void contextInitialized(ServletContextEvent sce) {
		System.out.println("ListenerReq----++---contextInitialized:---------jinru");
		String ENCODING = sce.getServletContext().getInitParameter("ENCODING");
		senderExeName = sce.getServletContext().getInitParameter("sendEXEname");
		closerExeName = sce.getServletContext().getInitParameter("closeEXEname");
		usecom = sce.getServletContext().getInitParameter("usecom");
		try {
			String[] temcom = usecom.split(";");
			sender = new int[temcom.length];
			sender_temp = new int[temcom.length];
			sendercom = new int[temcom.length];
			
			for (int ii = 0; ii < temcom.length; ii++) {
				sendercom[ii] = Integer.parseInt(temcom[ii]);
			}
		} catch (Exception e) {
			sender = new int[20];
			sender_temp = new int[20];
			sendercom = new int[20];
		}
		ProjectName = sce.getServletContext().getInitParameter("projectName");
		
		try {
			this.filePath = sce.getServletContext().getRealPath("/");
			
			// System.out.println("contextInitialized:---------connection");
			//DBServer.getConnection().close();
			// System.out.println("contextInitialized:---------close");
		
			// System.out.println("contextInitialized:---------EmployeeTool");
			// jtml.climgr.AreaIDContainer.load();
//			java.net.InetAddress ia = java.net.InetAddress.getLocalHost();
//			String addr = ia.getHostAddress();
			
			System.out.println("监听打开连接");
			}catch (Exception e) {
			e.printStackTrace();
		} finally {
			System.out.println("监听的finally");
		}
	}

	// /Notification that the servlet context is about to be shut down
	public void contextDestroyed(ServletContextEvent sce) {
		if (Constant.debug)
			System.out.println("contextDestroyed");
	}



	// Notification that a session was created
	public void sessionCreated(HttpSessionEvent se) {
		ircmSessionContent.AddSession(se.getSession());
		//if (jtml.util.db.Parameter.isDEBUG()) {
			if (Constant.debug) {
				count++;
				System.out.println("sessionCreated创建-line:"+count);
			}
//	}

	}

	// Notification that a session was invalidated
	public void sessionDestroyed(HttpSessionEvent se) {
		HttpSession session = se.getSession();
		ircmSessionContent.DelSession(session);
		String userID ="";
		if (se.getSession().getAttribute(Constant.UserId) != null) {
			userID = se.getSession().getAttribute(Constant.UserId).toString();
		}
			if (Constant.debug) {
				count--;
				System.out.println("sessionDestroyed销毁--line:"+count);
				System.out.println("sessionDestroyed--map:");
			}
	}
	// Notification that a new attribute has been added to a session
	public synchronized void attributeAdded(HttpSessionBindingEvent se) {
			if (Constant.debug){
				if(Constant.SessionUser.equals(se.getName())) {
					UserPO user = (UserPO)se.getValue();
					map.put(user.getUser_id(), se.getSession());
					mapSessionTime.put(user.getUser_id(), Long.toString(se.getSession().getCreationTime()));
					System.out.println("list chandu =" + list.size());
					if(list.indexOf(String.valueOf(user.getUser_id())) < 0)
						list.add(String.valueOf(user.getUser_id())); 
				} 
				System.out.println("sdfasdf********sename" + se.getName());
		}
	}

	// Notification that an attribute has been removed from a session
	public synchronized void attributeRemoved(HttpSessionBindingEvent se) {
 			if (Constant.debug){
				if(Constant.SessionUser.equals(se.getName())) { 
					UserPO user = (UserPO)se.getValue();
					map.remove(user.getUser_id());
					mapSessionTime.remove(user.getUser_id());
					System.out.println("list chandu2 =" + list.size());
					list.remove(String.valueOf(user.getUser_id()));
				} 
				System.out.println("attributeRemoved*");
 			}
	}

	// Notification that an attribute of a session has been replaced
	public synchronized void attributeReplaced(HttpSessionBindingEvent se) {

				if(Constant.UserId.equals(se.getName())) { 
					list.remove(se.getValue());
				    list.add(se.getSession().getAttribute(Constant.UserId));
					map.remove(se.getValue());
					mapSessionTime.remove(se.getValue());
				}
 				System.out.println("session attributeReplaced*"+se.getValue());
	}
	
	//统计在线人数
	public static int getCount() {
//		return (count);
		return (list.size());
	} 
	
	public synchronized static List getList() {
		return (list);
	}
	
	public synchronized static Map getMap() {
		return (map);
	}

	public synchronized static Map getMap_menu() {
		return map_menu;
	}

	public synchronized static void setMap_menu(Map map_menu) {
		ListenerReq.map_menu = map_menu;
	}

	/*public static Setting getSetting() {
		return setting;
	}

	public static void setSetting(Setting setting) {
		ListenerReq.setting = setting;
	}*/

	public synchronized static Map getMapSessionTime() {
		return mapSessionTime;
	}

	public synchronized static void setMapSessionTime(Map mapSessionTime) {
		ListenerReq.mapSessionTime = mapSessionTime;
	} 
}


分享到:
评论

相关推荐

    配置Oracle监听器

    配置监听器时,应考虑安全性,例如限制监听器的访问IP地址,或者设置合适的认证方式。同时,根据系统负载和网络环境,调整监听器的资源使用,如最大连接数,以优化性能。 以上是配置Oracle监听器的基本流程。实际...

    关于过滤器和监听器的使用模板

    在Java Web开发中,过滤器(Filter)和监听器(Listener)是两个非常重要的组件,它们主要用于增强应用程序的功能和管理应用程序的状态。以下是关于这两个概念的详细说明。 **过滤器(Filter)** 过滤器是Servlet...

    java一个监听器的例子

    在Java编程中,监听器...在提供的压缩包文件“05_监听器”中,可能包含更多关于Java监听器的实例代码和讲解,可以帮助深入理解这一主题。建议查看这些文件,动手实践并调试代码,以便更好地掌握Java监听器的使用。

    关于监听器Listener和过滤器的小demo

    在这个"关于监听器Listener和过滤器的小demo"中,作者可能创建了一个简单的Web应用程序,用以演示如何使用监听器监听应用程序的事件,以及如何使用过滤器处理请求和响应。文件`day10.html`和`day10.md`可能是记录了...

    JAVA事件监听器的四种实现方式

    事件监听器的实现方式有多种,本篇文章将介绍四种常见的事件监听器实现方式:自身类作为事件监听器、外部类作为事件监听器、匿名内部类作为事件监听器和内部类作为事件监听器。 1. 自身类作为事件监听器 在这个...

    java监听器和过滤器详解

    ### Java监听器和过滤器详解 #### 监听器概念及分类 监听器在Java Web开发中扮演着非常重要的角色,主要用于监听特定容器事件的发生,比如服务器对象的创建与销毁等,并根据这些事件做出相应的处理。它的工作原理...

    事件处理监听器

    本文将深入探讨事件处理监听器的概念,以及如何在Java或类似的面向对象语言中设置和使用它们。 首先,我们来理解“事件”这个概念。在UI编程中,事件是用户与界面元素交互的结果。例如,当用户点击一个按钮时,就会...

    servlet监听器技术源码

    通过`servletListener`这个文件名,我们可以推测这是一个关于Servlet监听器技术的示例代码或教程。可能包含如何创建监听器类,如何实现各种接口方法,以及如何在项目中部署和使用监听器等内容。深入学习这部分知识,...

    如何配置Oracle监听器

    本文将详细介绍如何正确配置Oracle监听器,特别是如何设置`listener.ora`文件。 #### 了解监听器的基本概念 在深入讨论配置细节之前,我们首先需要了解几个基本概念: 1. **监听器**:监听特定端口上的连接请求并...

    java监听器练习

    ### Java监听器基础知识与实践 #### 一、Java监听器概念 在Java中,监听器是一种用于处理特定事件的对象。当某个事件发生时(如按钮点击、键盘输入等),监听器将被调用来执行相应的操作。Java中的监听器机制是基于...

    servlet监听器案例

    你可以在这个监听器中进行全局初始化操作,例如加载配置文件、设置缓存等。 2. **ServletRequestListener**:此接口处理与请求相关的事件,比如每当一个新的HTTP请求到达Servlet容器时,监听器会被调用。这可用于...

    java 监听器练习

    ### Java监听器基础知识与实践 #### 一、Java监听器概念 在Java中,监听器是一种用于处理事件的机制。当某个特定类型的事件发生时,监听器会执行相应的操作。这种机制广泛应用于图形用户界面(GUI)编程中,使得...

    智能更新监听器使用说明

    以下是关于智能更新监听器的详细说明: 1. **推出目的**: 智能更新监听器的主要目的是简化C/S架构软件的补丁更新流程,确保系统始终保持最新状态,减少因手动更新导致的错误和遗漏。 2. **设计思路**: 更新...

    过滤器和监听器的使用与区别

    例如,一个常见的应用场景是,使用监听器创建会话并在会话创建时设置一个默认值,然后使用过滤器检查该值是否满足条件,如果不符合则重定向到登录页面。这样可以确保只有经过验证的用户才能访问受保护的资源。 总之...

    junit5 监听器工程

    在"junit5 监听器工程"中,我们主要关注的是如何利用JUnit5的监听器来收集和处理测试结果。这个压缩包可能包含了所有必要的JAR文件,使开发者能够集成监听器功能到他们的测试环境中。 首先,让我们了解一下什么是...

    Struts2的监听器的使用

    监听器是Servlet容器(如Tomcat)中的特殊Java类,它们实现了特定的监听器接口,并在特定事件发生时被调用。在Struts2中,这些监听器主要用于初始化框架、配置拦截器、管理Action实例等任务。 1. **...

    tomcat监听器

    Tomcat监听器是Tomcat服务器中的一个重要组件,它扮演着监控和管理应用程序生命周期的角色。监听器是服务器启动时加载的Java类,用于监听特定事件,如Web应用程序的启动、停止、上下文初始化或销毁等。这些监听器...

    javaweb_高级_过滤器_监听器

    【JavaWeb 高级:过滤器与监听器详解】 在JavaWeb开发中,过滤器(Filter)和监听器(Listener)是两种非常重要的组件,它们能够帮助我们实现更精细的控制和管理应用程序的行为。本篇将详细介绍过滤器的原理、使用...

    js监听器和计数器

    JavaScript(简称JS)是网页开发中的重要...以上就是关于"js监听器和计数器"的主要内容。通过合理地运用这些技术,开发者可以创建出更加智能和互动的网页应用,同时也能有效地监控和优化用户体验,防止界面假死等问题。

Global site tag (gtag.js) - Google Analytics