实现网站的单例登录:
1, 在用户表里增加一个判断登录状态的字段,如 loginStatus 0,表示未登录,1,表示已登录。
2, 当用户登录时查询此属性,如果为 0 可登录,如果是 1 表示已有人登录,不可在登录。
3, 用户如果已登录,将loginStatu为1的用户实例放入到 Session 中。
4, 当用户点击后台退出按钮时,我们可以update用户实例的loginStatus 为 0。此为正常流程。
5, 但如果用户没有点击后台退出按钮,直接关闭浏览器退出,该如何办。??
解决方案:
使用 HttpSessionListener 监听
A..服务器 会在每次新的会话(客户端打开一个新的页面)时 产生一个带有唯一ID的默认Session,并触发 HttpSessionListener 的 public void sessionCreated(HttpSessionEvent event) 方法。
B..当默认Session过期时触发HttpSessionListener的 public void sessionDestroyed(HttpSessionEvent event) 方法。
使用代码如下:
public class MySessionListener implements HttpSessionListener {
//默认session创建时调用此方法。
public void sessionCreated(HttpSessionEvent event) {
//得到session
HttpSession session=event.getSession();
}
//默认session销毁时调用此方法。
public void sessionDestroyed(HttpSessionEvent event) {
//得到session
HttpSession session=event.getSession();
//根据admin取出放置在session里面的用户的实例。
Object object=session.getAttribute(admin);
if(object!=null){
Admin admin=(Admin)object;
if(admin.getLoginStatus()==1){
admin.setLoginStatus(0);//登录状态:0,未登录。1,已登录。
//调用数据库链接更新Admin的状态.
}
}
}
}
登录部分代码如下:
adminCheck.setLoginStatus(1);//1表示登录状态。
this.adminManagerImp.updateAdmin(adminCheck);
session.put("admin", adminCheck);
最后需要注意的:
如果服务器意外重启,应在服务器重启后自动更新用户的登录状态。!!!
分享到:
相关推荐
假设在一个BBSSNS网站中,为了统计在线用户数量,通常会采用单例模式。例如,有一个`OnlineCounter`类用于记录当前在线人数: ```java public class OnlineCounter { private int onlineCount = 0; public ...
前言 在传统开发工程师眼里,单例就是保证...比如一个网站的登录,点击登录后弹出一个登录弹框,即使再次点击,也不会再出现一个相同的弹框。又或者一个音乐播放程序,如果用户打开了一个音乐,又想打开一个音乐,那么
最后,在线统计是指实时收集、处理和分析用户的行为数据,通常在大型网站或应用中使用。这可能涉及到大数据处理技术,如Hadoop、Spark等,或者使用NoSQL数据库如MongoDB进行快速存储。统计方法可能包括滑动窗口计数...
在电子商务网站中,ASP可以处理用户的请求,如登录、搜索商品、添加到购物车、支付等操作。通过ASP,开发者可以编写VBScript或JScript代码,与数据库交互,实现数据的增删改查,为用户提供实时更新的信息。 电子...
防止机器登录 对于攻击网站的XSS攻击,SQL注入,进行编码转换 对垃圾信息,敏感信息进行过滤 对交易转账等重要操作根据交易模式和交易信息进行风险控制 Sina微博的应用 大型网站架构要素 性能 可用...
10. 设计模式:例如单例模式用于数据库连接池,工厂模式用于对象创建等。 通过学习这个项目,开发者不仅可以掌握JSP和Struts2的实际应用,还能了解到一个完整的购物网站的架构和实现细节,从而提升自己的Web开发...
9. 用户认证和权限管理:如使用session和cookie实现用户登录状态的管理,以及基于角色的权限控制。 10. URL路由:理解URL路由的概念,以及如何在PHP中实现动态URL和页面跳转。 11. 轻量级框架:可能采用了如...
5. **权限管理**:学习资料分享网站可能有用户登录、注册、权限控制等功能,这涉及到用户认证(Authentication)和授权(Authorization)的实现,如Spring Security或者Apache Shiro。 6. **文件上传与下载**:作为...
7. **设计模式**:例如工厂模式、单例模式、观察者模式等,用于组织代码结构,提高代码复用性和可维护性。 在实际开发过程中,还需要考虑性能优化、安全性、可扩展性等方面。例如,使用缓存技术(如Redis)提高数据...
6. **身份验证与授权**:为了保护用户信息和网站资源,项目可能实现了ASP.NET的身份验证和授权机制,如Forms Authentication,控制用户登录、权限管理。 7. **缓存技术**:对于提高性能,可能使用了ASP.NET的缓存...
常见的设计模式如工厂模式、单例模式、观察者模式等,都在电商网站设计中发挥着关键作用。 10. **系统稳定性、可重用性和可扩充性** 系统设计时需考虑长期运行的稳定性和应对未来需求变化的扩展能力。通过良好的...
用户在网站上的所有操作,如浏览商品、登录注册、添加删除购物车中的商品、更改商品数量等,都将通过数据库进行记录和管理。 购物车模块的实现包括以下几个关键功能: 1. 商品展示:用户可以浏览网站上的商品信息,...
至于JavaBeans,设计模式如单例或工厂模式可能会被应用到,以提高代码的复用性和可维护性。 综合来看,这个音乐网站项目是一个典型的Java Web应用实例,涵盖了前端、后端和数据库的综合运用,对于学习和理解Java ...
8. **设计模式**:自动登录功能可能涉及“单例模式”(保证Session管理的唯一性)和“策略模式”(根据不同的验证策略处理用户登录)等设计模式。 9. **跨域问题**:Cookie有同源策略限制,即只能在创建它的域内...
在"精品课程网站"中,Struts2可能被用来处理用户的登录、注册、课程浏览、选课等操作,通过配置struts.xml文件来定义各种Action类和结果页面。 2. **Spring**:Spring框架是Java企业级应用的核心,它提供了依赖注入...
3. **用户认证与权限控制**:为了保障企业网站的安全,系统可能实现了用户注册、登录功能,并对不同用户角色进行权限划分,如管理员、普通用户等。 4. **国际化与本地化**:双语功能的实现可能涉及到资源文件的管理...
【标题】:“一个购物网站”揭示的是一个基于C#编程语言构建的在线购物平台。这个系统专注于提供电子商务功能,让初学者能够理解并学习到如何构建一个基础的网上购物系统。 【描述】:该购物系统的核心是其数据库...
在外卖网站中,UI层可能包括首页、商品展示、用户登录/注册、购物车、订单提交等页面。开发者应确保界面友好,操作流畅,并处理用户输入的数据,将其传递到下一层进行处理。 2. 业务逻辑层(BLL层):BLL负责实现...
4. **ASP.NET Identity**:这是.NET平台的用户认证和授权系统,源码可能用其来实现用户注册、登录、权限管理等功能。学习这部分可以提升我们对用户安全性的理解。 5. **响应式设计与Bootstrap**:现代网站需要适应...
在购物网站中,JSP页面通常用于展示商品列表、购物车、用户登录注册等视图。开发者可以利用EL(Expression Language)和JSTL(JavaServer Pages Standard Tag Library)简化页面逻辑,使代码更易于维护。 5. **项目...