HttpSession监听

 

 

在login后,向session中加入userBean

request.getSession().setAttribute("userBean", userBean);

 

 

 

1.web.xml 

<!-- 加载session监听 -->
 <listener>
  <listener-class>com.free.common.MySessionListener</listener-class>
 </listener>

 

2.MySessionListener.java

 

package com.free.common;

import java.util.*;
import java.util.Map.*;

import javax.servlet.http.*;

import com.free.pojo.*;


public class MySessionListener implements HttpSessionListener, HttpSessionAttributeListener{

 // 保存sessionID和userBean的映射 key-sessionId
 private static Map<String, TUser> userMap = new HashMap<String, TUser>();
 private static Map<String, HttpSession> sessionMap = new HashMap<String, HttpSession>();

 public MySessionListener(){

 }

 /** 以下是实现HttpSessionListener中的方法 **/
 public void sessionCreated(HttpSessionEvent se) {
  
 }

 public void sessionDestroyed(HttpSessionEvent se) {
  String sessionId = se.getSession().getId();
  TUser userBean = (TUser) se.getSession().getAttribute(Common.CONSTANT_USER);
  if(null == userBean){
   return;
  }
  String username = userBean.getUsername();
  userMap.remove(username);
  sessionMap.remove(sessionId);
 }

 /** 以下是实现HttpSessionAttributeListener中的方法 **/
 public void attributeAdded(HttpSessionBindingEvent se) {
  if(Common.CONSTANT_USER.equals(se.getName())) {
   TUser userBean = (TUser) se.getSession().getAttribute(Common.CONSTANT_USER);
   String sessionId = se.getSession().getId();
   String username = userBean.getUsername();
   userBean.setSessionId(sessionId);
   
   /**
    * 踢掉已经存在的用户
    */
   TUser ub1 = userMap.get(username);// 已经存在的用户
   if(null != ub1 && ub1.getUsername().equals(userBean.getUsername())){
    singleLogin(ub1.getId());
   }
   
   userMap.put(username, userBean);
   sessionMap.put(sessionId, se.getSession());
  }
 }

 public void attributeRemoved(HttpSessionBindingEvent se) {
  
 }

 public void attributeReplaced(HttpSessionBindingEvent se) {
  
 }

 /**
  * 描述:singleLogin 单点登录-踢掉之前的用户
  * @CreateOn Jul 26, 2011  9:20:04 PM
  * @author chun_chang
  */
 public static void singleLogin(String userId) {
  clearUserById(userId);
 }
 
 /**
  * 描述:clearUserById 清空同一在线用户的session
  * @param userId
  * @CreateOn Jul 25, 2011  11:05:44 AM
  * @author chun_chang
  */
 public static void clearUserById(String userId) {
  Map<String, TUser> tempMap = new HashMap<String, TUser>();
  tempMap.putAll(userMap);
  Iterator<Entry<String, TUser>> iter = tempMap.entrySet().iterator();
  while(iter.hasNext()) {
   Map.Entry<String, TUser> entry = (Map.Entry<String, TUser>) iter.next();
   TUser userBean = entry.getValue();
   if(userId.equals(userBean.getId())) {
    String sessionId = userBean.getSessionId();
    HttpSession session = sessionMap.get(sessionId);
    session.removeAttribute(Common.CONSTANT_USER);
    session.invalidate();
    sessionMap.remove(sessionId);
   }
  }
 }
 
 
}

 

 

 

 

 

 

 

ZYNQ RFSoC 的DAC如何做到从 0到Fs频段 信号输出 之前一直没太了解 RFSoC 的DAC如何输出在 Fs/2 到 Fs 频率范围内的信号,例如 ZCU216中的 ZU49DR,其RF-DAC最大采样率是 9.85GSPS,如果想输出的信号中心频率在5.8G,它是如何有效输出在第二奈奎斯特区域范围的信号的。 阅读详情

相关推荐

Lumerical官方案例、FDTD时域有限差分法仿真学习(十三)——多模干涉耦合器(MMI)

计算通过 1×2 端口多模干涉 (MMI) 耦合器的宽带传输和光损耗。 使用设备 S 参数在 INTERCONNECT 中创建 MMI 的紧凑模型。 它还展示了如何使用 CML 编译器提取这些参数以生成紧凑模型。 一、概述 了解模拟工作流程和关键结果 低损耗光合路器和分路器是基于 Mach-Zehnder 的光调制器的基本组件,并且是集成电路的关键组成部分。通过在输入/输出波导处使用线性锥形确保输入/输出波导的模式与干涉区域之间的

weixin_45719141的博客 1万+

利用HttpSessionListener监听器实现用户数据存储

需求: web项目中,需要获取访问该网站用户的地区位置数据。 所以考虑直接用监听器的方式来实现,即用户第一次访问时,此时服务器会创建session,取得request中的ip信息,去调用封装到service中获取百度定位信息的业务方法,最后将取得的定位信息放置到session中,供session全局使用。 实现: 1、实现接口HttpSessionListener

meepoGuan的博客 3504

ads设计Doherty功放(1)

Doherty功放的设计

qq_40995480的博客 2万+

request.setAttribute()和request.getSession().setAttribute()解释

request.setAttribute()只能在一个request内有效,如果重定向客户端,将取不到值。request.getSession().setAttribute()可以通过sessionID得到自己的session,将参数存储在session中,即使重定向客户端也没事,这个值可以在多个页面上使用。比如访问一个网站,登录后用户信息被保存到session中,在session过期之前或者用户关

人圭先生 2万+

使用同一个时钟源clki,做两个二分频时钟,得到div2_clk1和div2_clk2,这两个时钟都能跟源时钟clki同步,但是div2_clk1和div2_clk2的相位可能是相同的,也可能是反相

比如,触发器1的初始Q为0,而触发器2的初始Q为1(这可能由于芯片制造工艺的微小差异、上电过程的随机性、或没有全局复位信号导致)。这句话的意思是:虽然div2_clk1和div2_clk2都是由同一个妈妈(clki)生出来的,频率也都是妈妈的一半,但它们“起步”的时刻可能不同。所以,上面那段话是在提醒你注意这种潜在的、由分频产生的时钟相位关系的不确定性,这在异步电路设计或时钟管理中是必须考虑的关键因素。结果:div2_clk1和div2_clk2的波形完全重合,它们的上升沿和下降沿都发生在同一时刻。

m0_49540263的博客 592

【SoloPi】SoloPi使用2-功能使用,录制回放

Soloπ是什么 Soloπ是一个无线化、非侵入式的Android自动化工具,公测版拥有录制回放、性能测试、一机多控三项主要功能,能为测试开发人员节省宝贵时间。 录制回放功能 Soloπ拥有录制操作的能力,用户只需要通过Soloπ执行用例步骤,Soloπ就能够将用户的操作记录下来,并且支持在各个设备上进行回放,这一切都能够在手机上独立完成。 ...

q_Catherine的博客 5829

HttpSession详解(简称session)

session概述 Session表示会话,不止是在javaweb中存在,只要是web开发,都有会话这种机制。 在java中会话对应的类型是:javax.servlet.http.HttpSession,简称session/会话 在java web中session是一个存储在WEB服务器端的java对象,该对象代表用户和WEB服务器的一次会话。 那什么才叫一次会话呢? 一般多数情况下,是这样描述的:用户打开浏览器,在浏览器上进行一些操作,然后将浏览器关闭,表示一次会话结束。 本质上的描述:从sess

hcz666的博客 2万+

2026年03月CCF-GESP编程能力等级认证Scratch图形化编程一级真题解析

本文收录于《,订阅后可阅读专栏内所有文章。

人生就是一个不断学习的过程 240

HttpSession 相关的监听

在前面我们学习了servletconfig和servletContext 知道了他们的应用方式,以及servletcontext 相关的监听后我们下面来看看httpsession 相关的监听   Httpsession 相关的监听有: HttpSessionListener,HttpSessionAttributeListener,HttpSessionBindingListener以及Htt

bit-cafe 3100

实战:爬取某小程序的订单数据(解析小程序 API 参数)

本文以美团外卖小程序为例,详细分析了电商类小程序订单数据接口的技术实现与采集方法。首先通过抓包定位核心接口,解析其请求参数;重点破解了token验证机制与sign签名加密算法,通过逆向分析还原参数生成逻辑;最后基于Python实现了订单数据的自动化爬取与存储。文章强调数据采集需遵守法律合规性,提供应对反爬机制的策略,并指出了必须在获得合法授权的前提下使用这些技术。该研究为数据采集工程师提供了实用的技术参考,但必须严格遵循"最小必要"原则,确保不违反平台规则和用户隐私保护法规。

2503_91057718的博客 2317

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

java http监听_Java-HttpSession监听

//HttpSession监听public interface HttpSessionActivationListener extends EventListener {/** Notification that the session is about to be passivated.*///session无效监听public void sessionWillPassivate(HttpSes...

weixin_39609752的博客 212

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

[Servlet]HttpSession的事件监听、HttpServletRequest的事件监听

1. HttpSession不同事件对应不同监听器:     1) 关于HttpSession总共有4种监听器,分别是HttpSessionListener、HttpSessionAttributeListener/HttpSessionBindingListener和HttpSessionActivationListener;     2) HttpSessionListener:生命周期监

Lirx_Tech的专栏 6521

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

java session监听器_javaWeb:HttpSession的监听器

还有两个与HttpSession相关的特殊的监听器,这两个监听器的特点如下:l 不用在web.xml文件中部署;l 这两个监听器不是给session添加,而是给Bean添加。即让Bean类实现监听器接口,然后再把Bean对象添加到session域中。下面对这两个监听器介绍一下:l HttpSessionBindingListener:当某个类实现了该接口后,可以感知本类对象添加到sessi...

weixin_26997697的博客 303

HttpSession监听器的执行顺序

Servlet标准中指定了4个用于监听HttpSession中的各种事件的监听器接口,它们分别是: HttpSessionListener HttpSessionAttributeListener HttpSessionBindingListener HttpSessionActivationListener 下面对这几个接口里面的方法用户进行简要的描述1. HttpSessionListener

简简单单兔呦 3060

servlet HttpSession 监听器

http://blog.csdn.net/wyzsc/article/details/6258567   一、Servlet中对象作用域 1、  ServletContext 上下文 应用服务器一启动就产生该对象,服务器关闭即销毁 作用于全局,所有Servlet ,相当于静态变量 2、  HttpSession 会话 客户端第一次请求产生,session过期销毁 作用于同一个客...

阿O、不拽 244

大模型GPT辅助学习解释代码-HttpSession 监听器

最近在接触 旧项目代码是 往往没有注释,或者是注释和代码对应不上,这样对于了解业务逻辑,以及后期的改造开发造成了很大的困扰。尽然大模型 这么强大,我们尝试下用大模型来解释代码。以下是大模型对项目代码中的。,用于监听会话(session)的创建和销毁事件,同时在类初始化时执行特定的清理操作。的 代码解释,很高效的方式,可以借鉴。本文主题大模型解释代码。

ahauedu的专栏 1147

ServletContextListener监听器,HttpSession监听器,ServletRequestListener监听器的使用

ServletContextListener监听器的使用 使用ServletContextListener监听器监听ServletContext的创建和销毁的实现思路是怎样的? 1、创建监听器类实现ServletContextListener接口,重新接口的所有方法。 package com.web.demo02; import javax.servlet.Serv

反正我不管,就爱陈旭员 979

与HttpSession有关的四个监听器之间的区别

与HttpSession有关的四个监听器之间的区别简介:HttpSession常用的四个监听器HttpSessionBindingListener,HttpSessoinActivationListener,HttpSessionListener和HttpSessionAttributeListener的区别 一、HttpSessionListener和HttpSessionAttributeLi...

弱弱的猿 3122

Listener监听器----HttpSession对象的生命周期监听器

Listener监听器----如何创建一个能够监听HttpSession生命周期的监听器

阿土不土的博客 1473

【servlet】HttpSession、HttpServletRequest实现数据共享、监听器、过滤器

HttpSession接口(一) HttpSession接口(二)

清风微醺的博客 2801

HttpSession,ServletContext,ServletContextAttribute创建,销毁监听

//1.实现对应的接口 public class OnLineUserListener implements HttpSessionListener, ServletContextListener, ServletContextAttributeListener { public void sessionCreated(HttpSessionEvent hse) { // 创建一个新的Session时触发 } public void sessionDestroyed(HttpSession

csdn_190421的博客 193

监听器类:主要任务是用ServletRequest将我们的HttpSession携带过去

import org.springframework.stereotype.Component; import javax.servlet.ServletRequestEvent; import javax.servlet.ServletRequestListener; import javax.servlet.http.HttpServletRequest; import javax.ser...

AmbroseLe 287

HttpSession相关的监听器

 1、HttpSessionListener public void sessionCreated(HttpSessionEvent se) public void sessionDestroyed(HttpSessionEvent se)这个监听器可以监听一个session对象的建立与失效,从方法的名字中可以很容易的看出。例:public class MySessionListener im

学习无止境,勤奋是动力 1642

与HttpSession相关的监听器

概述 与HttpSession相关的监听器有四个:分别是HttpSessionListener、HttpSessionAttributeListener、HttpSessionBindingListener与HttpSessionActivationListener。 HttpSessionListener HttpSessionListener是“生命周期监听器”,在Http...

atu99602的博客 448
上一篇: jdbcTemplate与hibernateTemplate混用
下一篇: PropertyGrid 去除列排序
chun521
博客等级 码龄20年 11粉丝 144原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值