事件监听器,监听同一个用户重复登陆

监听器防止重复登录 用监听器防止重复登录,强迫前一个登录的下线登录首页(index.jsp)登录处理页面(login.jsp)主页面main.jsp用户登录权限过滤器(SessionFilter.java)防止用户重复登录的监听器(LoginSessionListener.java)登录用户与session缓存对象(LoginCache.java)配置过滤器和监听器web.xml目录结构检验时用不同的浏览器登录(代表... 阅读详情

事件监听器

一;监听同一个用户重复登陆

   下面以一个用户登陆列;来讲解sessiong监听器的原理和用法

1,  创建一个容器来封装登陆用户的信息,代码如下:

package org.luojs.lister;

import java.util.ArrayList;

import java.util.List;

import com.luojs.struts.form.UserForm;

public class ListLister {   

    private static List list = new ArrayList();   

    public ListLister(){       

         super();

    }  

    public List getList(){

        return list;

    }

    public void addList(UserForm user){

        this.list.add(user);

    }

    public void remove(int n){

        list.remove(n);

    }

    /**

     * 判断新来的用户是否也存在,如果存在,返回ture

     * @param user

     * @return true;

     */

    public boolean isExec(UserForm user){      

        boolean flag = false;

        for (int i = 0; i < list.size(); i++) {

            UserForm userForm = (UserForm)list.get(i);

            if(userForm.getUsername().equals(user.getUsername())){

                flag = true;

                break;

            }

        }      

        return flag;

    }

}

 

 

 

 

2,  监听器需要实现一个接口(implements HttpSessionAttributeListener),

package org.luojs.lister;

 

import javax.servlet.http.HttpSessionAttributeListener;

import javax.servlet.http.HttpSessionBindingEvent;

 

import com.luojs.struts.form.UserForm;

 

public class SessionLister implements HttpSessionAttributeListener{

   

        /* 创建一个 ListLister 来封装登陆的用户对象 */

        private static ListLister list = new ListLister();

        /**

         *  实现attributeAdded 方法,当用户向session 中添加用户对象时,触法次方法

         *  这个方法将把该用户的信息保存到 ListLister 中

         */

       public void attributeAdded(HttpSessionBindingEvent arg0) {

           System.out.println("wcome you ! add ");

           if(arg0.getName().equals("username")){

              System.out.println("wcome you ! add sssssssssssssss");

              UserForm answer = (UserForm)arg0.getValue();

              list.addList(answer);

           }         

       }

        /**

         * 当有用户登陆来时,判断他是否已存在,如果存在,让他出去

         */

       public void attributeRemoved(HttpSessionBindingEvent arg0) {

           System.out.println("wcome come your removed ");

             int n=0;

             UserForm p1 = (UserForm)arg0.getValue();

              for(int i=0;i<list.getList().size();i++){

              UserForm p2 = (UserForm)list.getList().get(i);

              if(p1.getUsername().equals(p2.getUsername())){

                   n=i;

                   break;

              }

              }

              list.getList().remove(n);

       }

       public void attributeReplaced(HttpSessionBindingEvent arg0) {

       }     

}

 

3, 处理用户提交时的代码:(这是在Struts 中的验证)

public ActionForward longin(ActionMapping mapping, ActionForm form,

           HttpServletRequest request, HttpServletResponse response) {

       UserForm userForm = (UserForm) form;// TODO Auto-generated method stub

       boolean flag = false;

       ListLister listuser = new ListLister();

       HttpSession session = request.getSession();

       String user = userForm.getUsername();

       String pass = userForm.getPassword();

       flag = userbiz.selectByName(user, pass);

       if (flag) {

           if (!listuser.isExec(userForm)) {

              session.setAttribute("username", userForm);

              return mapping.findForward("indexto");// 如果登陆成功,把权限转交给JobsAction

           } else  {

              error = "<h3><li>Sorry! 此用户也存在,不能重复登陆 !</h3>";

           }

       } else {

           error = "<h3><li> sorry ! this is your userName or passwrod error !</h3>";

       }

       request.setAttribute("error", error);

       return mapping.findForward("backToIndex");// 回到登陆页

    }

3,  在web.xml中注册监听器;

<listener>   <listener-class>org.luojs.lister.SessionLister</listener-class>

    </listener>

 

分享一个我自用的 Python 消息发送模块,支持邮件、钉钉、企业微信 🔥 分享一个我自用的 Python 消息发送模块,支持邮件、钉钉、企业微信 阅读详情

相关推荐

MIT Cheetah Learning (一):State Estimate 从理论到实践:EKF融合IMU与编码器的状态估计全解析

本文深入解析了MIT Cheetah机器人中基于Extended Kalman Filter的状态估计技术,详细探讨了如何融合IMU与编码器数据以实现精准的State Estimate。通过四元数建模和传感器误差分析,揭示了EKF在复杂地形中的工程实践价值,为四足机器人的实时状态估计提供了完整解决方案。

weixin_30292843的博客 304

Java监听器实现防止重复登录案例

监听器的功能 防止重复登录:当一个用户登录系统之后,另外一个用户使用相同账户登陆时,对前一个用户进行踢除操作,保证在同一时间只有一个账户在登录系统。 案例说明: 通过过滤器实现登录控制,未登录用户不能访问系统首页 用户登录,将登录名存储到session里 登录监听器session属性中登录值属性变化 若登录用户用户名已登录系统,清除前次登录信息 步骤: 实现登录功能 登录权限过...

liuzhongyu 2110

从摄像头选型到PCB布线:搞懂MIPI CSI带宽计算,避免你的嵌入式项目翻车

本文详细解析了MIPI CSI带宽计算在嵌入式项目中的关键作用,从摄像头选型到PCB布线提供全流程指导。通过实际案例和计算公式,帮助工程师准确计算带宽需求,避免图像丢帧和系统崩溃问题,同时优化PCB设计确保信号完整性。

weixin_30533109的博客 375

使用session监听器解决用户重复登陆问题

引用别人的回答:首先, 你在登陆的时候应该把用户名存入到session中去, 然后用Web自带框架中, 有一个HttpSessionListener接口, 还有HttpSessionAttributeListener接口, 他们两个有一些需要实现的方法 HttpSessionListener两个:sessionCreated, sessionDestroyed sessi...

u014605652的博客 1551

Open FPV VTX与Betaflight的MSP协议配置详解:从硬件连接到OSD显示

本文详细解析了如何通过MSP协议将Open FPV VTX与Betaflight飞控进行深度集成,实现飞行数据在OSD上的稳定显示。内容涵盖从硬件连接、Betaflight端口MSP服务启用,到VTX侧配置与OSD元素布局调校的全流程,并提供了常见问题的排查思路,帮助FPV玩家构建可靠的数据叠加系统。

weixin_29201933的博客 452

风控IV、AUC、KS python计算代码

df_temp:数据集,Y:是否逾期标签,feas_list:需要计算IV的 变量。2、 按月和不同Y 下的 IV计算。

暮雨听轩的专栏 1618

Javaweb中实现监听器的操作,进行重复登录的验证

在此之前,需要懂得是否重复登录是如何进行判断的: 1.用户进行登录的时候信息是存在session中进行信息的传递; 2.session传递的过程中我们可以知道是使用HttpSessionAttributeListener中一个add可以进行监听操作 3.session是存在服务器上面的不是存在客户端 4.每次的登录浏览器都会生成一个对应的sessionId,用来做标识识别,那么他们的内容是连接在一起的; 那么我们就可以进行一个操作了,session是存在服务端,那么我们就可以进行对session的操作,那么

谢先生的日记 819

详述字符集与汉字编码

字符集与字符编码是文本处理的基础概念。字符集定义字符集合(如ASCII、GB2312、Unicode),字符编码则规定字符如何存储为二进制数据。汉字编码经历了从区域化(GB2312、GBK、BIG5)到全球化(Unicode)的演进,Unicode通过UTF-8、UTF-16等编码方案实现跨语言兼容。UTF-8因兼容ASCII、节省空间且无乱码风险,成为中文互联网的主流编码。正确处理编码问题需统一标准、明确声明格式,并注意生僻字的特殊处理。

零零发不爱ai的博客 805

java中监听器和session的一个练习

默认情况下第一次访问服务器,服务器端就会产生一个session对象,再会话期内,这个对象一直存在。 但是可以通过修改一些配置来设置浏览器每次请求访问的时候不产生session对象。 (有什么不对的,大家可以指出来啊,自己对session的理解不是很到位。) 在做这个例子的时候,无论如何我都获取不到EL表达式的值,想了半天终于知道了。 首先我在运行代码的时候,浏览器一直在运行

XiaopinOo的博客 1007

ARM与PC共享文件方式【samba】移植与配置

方式推荐指数适用平台优点缺点⭐⭐⭐⭐⭐全平台 (Win/Mac/Linux)兼容性最强,操作像本地文件配置稍繁琐,协议开销略大NFS⭐⭐⭐⭐Linux/Mac (Win支持一般)速度极快,CPU占用低Windows配置复杂,权限管理较难SFTP (SSH)⭐⭐⭐⭐全平台 (需客户端)安全加密,无需额外配置服务需使用FileZilla/Xftp等专用软件物理U盘⭐⭐⭐全平台无需网络,速度取决于接口需要人工插拔,不适合自动化Syncthing⭐⭐⭐⭐全平台自动同步,支持远程。

浩瀚之水的专栏 263

YOLOv10改进,YOLOv10添加DICAM,用于水下图像增强模块,以提高朦胧水下图像的质量、对比度和色偏

在水下环境中,成像设备会出现水浑浊、光衰减、散射和颗粒问题,导致图像质量低、对比度差和彩色图像有偏差。这给使用传统视觉技术进行水下状态监测和检查带来了巨大挑战。近年来,水下图像增强因其在提高当前计算机视觉任务在水下目标检测和分割中的性能方面发挥着关键作用而受到越来越多的关注。由于主要从自然场景构建的现有方法在提高色彩丰富度和分布方面存在性能限制,作者提出了一种新颖的基于深度学习的方法,即 Deep Inception 和 Channel-wise Attention Modules (DICAM),以提高朦

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 480

事件监听器--监听同一个用户重复登陆

事件监听器 一;监听同一个用户重复登陆    下面以一个用户登陆列;来讲解sessiong监听器的原理和用法 1,  创建一个容器来封装登陆用户的信息,代码如下: package org.luojs.lister; import java.util.ArrayList; import java.util.List; import com.luojs.struts.form.UserF...

老罗技术专栏 296

Yolov8-pose关键点检测:通用倒瓶颈(UIB)搜索块结合C2f二次创新 | 轻量化之王MobileNetV4

通用倒瓶颈(UIB)搜索块结合C2f二次创新

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 613

sessiong监听器的原理和用法 监听同一个用户重复登陆

事件监听器一;监听同一个用户重复登陆   下面以一个用户登陆列;来讲解sessiong监听器的原理和用法1,  创建一个容器来封装登陆用户的信息,代码如下:package org.luojs.lister;import java.util.ArrayList;import java.util.List;import com.luojs.struts.fo

老罗技术专栏 760

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

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

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

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

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

Lirx_Tech的专栏 6521

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Java监听器

定义 是Servlet规范定义的一种特殊类 用于监听ServletContext,HttpSession,ServletRequest等域对象的创建,销毁及其属性修改发生变化的事件 在时间发生前后进行一些必要的操作 实现步骤 编写java类实现监听器的接口,并且实现其接口方法 在web.xml文件中对实现的监听器类进行注册 监听器的实现过程: 1.编写java类实现监听器的接口,并且实现其接口方法 不同接口的实现描述 ServletContextListener:监听ServletC.

Slovenia_groot的博客 1481

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Spring事件监听机制

Spring事件监听机制详解

CodAlun的博客 1128

java中监听器要实现哪些接口,Java 监听器

Java 监听器简介监听器是Servlet规范定义的一种特殊类,用于监听ServletContext,HttpSession,ServletRequest等域对象的创建、销毁及其属性修改发生变化的事件。监听器可以在事件发生前后进行一些必要的处理操作。常见的应用场景统计在线人数和在线用户应用启动时完成信息初始化工作网站访问量的统计与Spring结合Web系统防止用户重复登陆监听器的实现步骤1.编写j...

weixin_35696092的博客 1356

Javaweb通过监听器监听web组件的一举一动。

Javaweb监听器的简介 开发入门 监听器分类 重点 监听器案例 监听器的简介 1、web服务器 -------》web监听器(servelt规范)----》1、servletcontext application 2、HttpSession session 3、servletRequest request 2、Java监听器的定义 1、servlet规范定义的一个特殊的类 2、用于监...

Too_seeyou的博客 369

监听器

监听器 监听对象 监听ServletContext、HttpSession 和ServletRequest等域对象的创建和销毁,以及他们属性修改发生的变化事件,监听器可以在事件发生前后进行一些必要的处理操作。web监听器是Servlet规范定义的一种特殊类。 监听器的应用场景 统计在线人数和在线用户 每一个用户第一次访问服务器上的web应用时都会产生一个Session会话,通过统计Sessi...

lxcoding 236

登录用户监听

package com.nbw.login; import java.util.Date; import javax.servlet.http.HttpSession; import javax.servlet.http.HttpSessionBindingEvent; import javax.servlet.http.HttpSessionBindingListener; ...

hanweiisjerry1的专栏 263

uniapp监听服务器消息,事件的监听注册以及触发

> uniapp 提供了事件的监听注册以及触发,注册的事件都是 App 全局级别的,可以很方便的跨任意组件,页面,nvue,vue 等。[TOC]### 相关注册或触发函数> 参考:https://uniapp.dcloud.io/api/window/communication#### uni.$emit(eventName,OBJECT)> 触发全局的自定事件。附加参数都会传...

weixin_42524824的博客 2228

Web服务端技术:过滤器与监听器

Filter被称为过滤器,Filter基本功能就是对Servlet容器调用Servlet的过程进行拦截,它位于客户端和处理程序之间,能够对请求和响应进行检查和修改。在Web程序开发中,经常需要对某些事件进行监听,以便及时作出处理,如监听鼠标单击事件、监听键盘按下事件等。为此,Servlet提供了监听器(Listener),专门用于监听Servlet事件。

Helowr的博客 945

java 用户进行锁定_Java中SpringSecurity密码错误5次锁定用户的实现方法

Spring Security简介Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。它提供了一组可以在Spring应用上下文中配置的Bean,充分利用了Spring IoC,DI(控制反转Inversion of Control ,DI:Dependency Injection 依赖注入)和AOP(面向切面编程)功能,为应用系统提供...

weixin_28523493的博客 412

中软国际实习第四天-SSM框架回顾+用户管理系统搭建

本文主要描述了SSM框架搭建流程,用户管理系统登陆功能的实现,监听器和过滤器的讲解,Spring Security的大致介绍,boolean和Boolean的对比.

qq_41970098的博客 326

监听器 - 基础篇

定义 ◆ Servlet规范定义的一种特殊类。 ◆ 用于监听ServletContext,HttpSession,ServletRequest等域对象的创建、销毁及其属性修改发生变化的事件。 ◆ 监听器可以在事件发生前后进行一些必要的处理操作。 常见应用场景 ◆ 统计在线人数和在线用户 ◆ 应用启动时完成信息初始化工作 ◆ 网站访问量的统计 ◆ 与Spring结合 ◆ Web系统...

567
上一篇: 网上书店
下一篇: java- JDBC连接各种数据库小结
luojs_java
博客等级 码龄18年 2粉丝 6原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值