前段时间搞了一个简单的单用户登陆实现例子,虽然不能实现敏捷反应,但是对安全相对要求底的系统还是可以考虑的。
具体原理:结合过滤器+Servlet监听器。
ServletContext对象保存的是整个WEB应用程序的共享信息,那么如果用户登陆可以把用户的部分信息保存在ServletContext中。
Servlet监听器可以监听用户过期或者注销,把用户信息从ServletContext中删除。
那么,现在关键是如何设计保存在ServletContext中的用户信息:这里,由于用户的ID是唯一的,那么我们可以利用Map集合保存在线用户列表(由于Map内部是使用类似索引查询进行快速查找,所以效率还是比较高的),Map的key是UID,Object是一个包含 uid、name、serial、time(记录时间)四个必要信息。这里关键是serial、time两个属性,用户登陆时会产生一个唯一的随机码,如果此用户登陆后在别的地方登陆,那么就会修改这个随机码,这时原来登陆的用户在ServletContext中保存的随机码就改变了(与用户sesion中的随机码不同),那么其就被迫下线(这个工作由过滤器来做);那么time的作用是什么呢,它是减少过滤器的判断时间间隔,减少用户每个请求都进行一次从ServletContext中获取serial与session中的serial进行比较的过程,减少资源的开销。
需要建立的数据对象类:User.java(用户session)、UList.java(ServletContext中的元数据);
需要建立的servlet:Login.java;
需要建立的filter:Check.java(判断用户的权限以及serial是否有效);
需要建立的listener servlet:UserListener.java(web服务器启动时初始化用户列表到ServletContext中,用户登陆时把用户信息添加到ServletContext中,用户过期或者注销把用户信息从ServletContext中删除)。
分析完毕,附实现源代码!
分享到:
相关推荐
一个简单的Codeigniter用户登录验证例子程序,支持session,密码加密存储,供初学者参考。
本程序是运用Struts实现的最简单的用户登录并显示用户登录信息的例子。
一个简单的用户管理的例子,含UML和C#代码实现,UML中包含用例图,类图和顺序图等
spring初学这可以参考的用户登录注册简单的例子,mvc设计模式的spring框架,适合初学者,比较简单,容易理解和入门
jsp+servlet+javabean实现登录例子
java实现的用户登录程序JavaScript和jsp程序的例子可以直接修改用
java网络书店 。一个简单的j2ee web开发例子, access数据库,tomcat resin 等主流的web服务器都可以部署应用 。实现了网络书店的基本的功能 用户订单,退订,管理员 管理图书,用户等功能
SpringBoot使用Ajax实现登录例子
在Android平台下,通过与Servlet交互实现用户登录与注册,很简单的例子,导入就可以运行,很适合新手
一个用户注册和登录的小例子。代码为ASP.NET C#,采用asp.net和jquery异步方式实现。 用户登录采用模态弹出窗口,异步方式验证登录信息,不刷新页面。 用户注册,能检查用户名和密码是否为空,当用户输入用户名时...
实现登录注册打狗棒法多个地方好股份回购 个人都给人打工
里面是一个例子,详细的描述了如何通过jsp语言制作的用户登录注册页面
当有多个用户使用同一帐号登录时,只允许最后面的一个使用,前面的不能使用,一个简单的例子程序 struts2 hibernate spring
使用HBuilderX开发登录实例。我的博客主页:https://blog.csdn.net/k571039838k?orderby=UpdateTime
简单驱动例子!用DDK编译即可。基本实现驱动该有的功能。实现派遣过程相应用户态请求。写的很菜。。。。。高手飞过。。。仅供交流。。。
一个简单的用户登录功能界面的实现.学习C/S结构ADO.NET的入门好例子。
在这个例子中,我们创建了一个简单的用户管理应用,用户可以对用户信息进行增删改查操作。首先,我们需要创建一个MySQL数据库,并在其中创建一个用户表,用于存储用户信息。接下来,我们使用Java编程语言编写一个...
实现购物车的功能,用户再点击物品时,加入购物车,如果之前该购物车中已经有该产品,则只需要调出原有数组,将产品数量+1,如何没有该产品,那么重新组成一个数组
用户注册,登录程序在WEB开发中已经是较常见的了,在实现方法上不是难点,现在android流行了,如何在一些Android应用或网站上实现用户登录和注册呢?其实和WEB开发一样简单,只要您看了这个完整的例子,相信你会学会...
wpf下使用用户控件实现分页的简单例子,相信一定会对大家有很大的参考意义