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;
}
}
分享到:
相关推荐
配置监听器时,应考虑安全性,例如限制监听器的访问IP地址,或者设置合适的认证方式。同时,根据系统负载和网络环境,调整监听器的资源使用,如最大连接数,以优化性能。 以上是配置Oracle监听器的基本流程。实际...
在Java Web开发中,过滤器(Filter)和监听器(Listener)是两个非常重要的组件,它们主要用于增强应用程序的功能和管理应用程序的状态。以下是关于这两个概念的详细说明。 **过滤器(Filter)** 过滤器是Servlet...
在Java编程中,监听器...在提供的压缩包文件“05_监听器”中,可能包含更多关于Java监听器的实例代码和讲解,可以帮助深入理解这一主题。建议查看这些文件,动手实践并调试代码,以便更好地掌握Java监听器的使用。
在这个"关于监听器Listener和过滤器的小demo"中,作者可能创建了一个简单的Web应用程序,用以演示如何使用监听器监听应用程序的事件,以及如何使用过滤器处理请求和响应。文件`day10.html`和`day10.md`可能是记录了...
事件监听器的实现方式有多种,本篇文章将介绍四种常见的事件监听器实现方式:自身类作为事件监听器、外部类作为事件监听器、匿名内部类作为事件监听器和内部类作为事件监听器。 1. 自身类作为事件监听器 在这个...
### Java监听器和过滤器详解 #### 监听器概念及分类 监听器在Java Web开发中扮演着非常重要的角色,主要用于监听特定容器事件的发生,比如服务器对象的创建与销毁等,并根据这些事件做出相应的处理。它的工作原理...
本文将深入探讨事件处理监听器的概念,以及如何在Java或类似的面向对象语言中设置和使用它们。 首先,我们来理解“事件”这个概念。在UI编程中,事件是用户与界面元素交互的结果。例如,当用户点击一个按钮时,就会...
通过`servletListener`这个文件名,我们可以推测这是一个关于Servlet监听器技术的示例代码或教程。可能包含如何创建监听器类,如何实现各种接口方法,以及如何在项目中部署和使用监听器等内容。深入学习这部分知识,...
本文将详细介绍如何正确配置Oracle监听器,特别是如何设置`listener.ora`文件。 #### 了解监听器的基本概念 在深入讨论配置细节之前,我们首先需要了解几个基本概念: 1. **监听器**:监听特定端口上的连接请求并...
### Java监听器基础知识与实践 #### 一、Java监听器概念 在Java中,监听器是一种用于处理特定事件的对象。当某个事件发生时(如按钮点击、键盘输入等),监听器将被调用来执行相应的操作。Java中的监听器机制是基于...
你可以在这个监听器中进行全局初始化操作,例如加载配置文件、设置缓存等。 2. **ServletRequestListener**:此接口处理与请求相关的事件,比如每当一个新的HTTP请求到达Servlet容器时,监听器会被调用。这可用于...
### Java监听器基础知识与实践 #### 一、Java监听器概念 在Java中,监听器是一种用于处理事件的机制。当某个特定类型的事件发生时,监听器会执行相应的操作。这种机制广泛应用于图形用户界面(GUI)编程中,使得...
以下是关于智能更新监听器的详细说明: 1. **推出目的**: 智能更新监听器的主要目的是简化C/S架构软件的补丁更新流程,确保系统始终保持最新状态,减少因手动更新导致的错误和遗漏。 2. **设计思路**: 更新...
例如,一个常见的应用场景是,使用监听器创建会话并在会话创建时设置一个默认值,然后使用过滤器检查该值是否满足条件,如果不符合则重定向到登录页面。这样可以确保只有经过验证的用户才能访问受保护的资源。 总之...
在"junit5 监听器工程"中,我们主要关注的是如何利用JUnit5的监听器来收集和处理测试结果。这个压缩包可能包含了所有必要的JAR文件,使开发者能够集成监听器功能到他们的测试环境中。 首先,让我们了解一下什么是...
监听器是Servlet容器(如Tomcat)中的特殊Java类,它们实现了特定的监听器接口,并在特定事件发生时被调用。在Struts2中,这些监听器主要用于初始化框架、配置拦截器、管理Action实例等任务。 1. **...
Tomcat监听器是Tomcat服务器中的一个重要组件,它扮演着监控和管理应用程序生命周期的角色。监听器是服务器启动时加载的Java类,用于监听特定事件,如Web应用程序的启动、停止、上下文初始化或销毁等。这些监听器...
【JavaWeb 高级:过滤器与监听器详解】 在JavaWeb开发中,过滤器(Filter)和监听器(Listener)是两种非常重要的组件,它们能够帮助我们实现更精细的控制和管理应用程序的行为。本篇将详细介绍过滤器的原理、使用...
JavaScript(简称JS)是网页开发中的重要...以上就是关于"js监听器和计数器"的主要内容。通过合理地运用这些技术,开发者可以创建出更加智能和互动的网页应用,同时也能有效地监控和优化用户体验,防止界面假死等问题。