package com.xingyou.single.service;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import com.xingyou.single.dao.UserDao;
import com.xingyou.single.entity.Users;
import com.xingyou.single.map.SessionMap;
/**
* 业务类
* @author 幸游
* @version 1.0
*/
public class UserService {
/**
* 用户登陆
* @param users 要登录的用户
* @param request对象
* @return 登陆结果,返回null则代表登陆成功,否则返回登陆失败信息比如密码错误之类的
*/
public String login(Users users,HttpServletRequest request){
if(users == null){
return "请不要非法访问!";
}
UserDao dao = new UserDao();
Users user = dao.findUsersByLoginName(users.getLoginName());
if(user == null){
return "用户名错误!";
}
//检查密码
if(!user.getLoginPwd().equals(users.getLoginPwd())){
return "密码错误!";
}
//检查用户是否已登录
boolean logined = checkLogined(user);
//已经登陆了
if(logined){
//让以前登陆的人下线
HttpSession session = (HttpSession)SessionMap.sessionMap.get(user.getLoginName());
//设置session存活期0,就是让session失效
session.removeAttribute("user");
}
request.getSession().setAttribute("user", user);
//如果该用户没有注销就再一次登陆,需要删除msg属性,否则会提示:该账户已在其他地方登陆
request.getSession().removeAttribute("msg");
//将登陆的用户和session写入sessionMap
SessionMap.sessionMap.put(user.getLoginName(), request.getSession());
return null;
}
/**
* 用户登出,给大家留个作业吧,在result.jsp中添加一个连接,用来退出登陆,记得退出登陆后记得把SessionMap中与该用户匹配的session给干掉
* 还得注意该用户点击退出登陆之前是否已经被别人登陆过,如果已经被登陆过了,那么久不要干掉SessionMap中那个session
* @param users 要登出的用户
*/
public void logout(Users users){
}
/**
* 检查该用户是否已经登陆
* @param users 要检查的用户
* @return 是否已经登陆,true已登录,false没有登陆
*/
public boolean checkLogined(Users users){
String name = users.getLoginName();
Object obj = SessionMap.sessionMap.get(name);
if(obj == null){
return false;
}
return true;
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
用户同一时段不能重复登录类似QQ(MyEclipse+mysql+Ajax)
共31个文件
class:8个
java:8个
xml:2个
5星 · 超过95%的资源 需积分: 15 27 下载量 90 浏览量
2016-09-01
10:09:26
上传
评论 2
收藏 688KB ZIP 举报
温馨提示
MyEclipse+mysql+Ajax工具,解决用户同一时段不能重复登录,第二次登录将会挤掉第一次登录用户,弹出消息框(你已在其他地方登录,被迫下线),我也是借鉴其他大师 然后自己整理的。基本逻辑是:用户登录时候检测用户是否已经登录过,如有则删除原来的用户信息,登录现在用户的信息。用户的登录信息保存在SessionMap里面。再加一个session监听和Ajax进行请求,每几秒进行求登录验证一次,检查本用户是否被其他用户登录,如果被其他用户登录,则弹出消息框(Msg)。可以用同一电脑不同浏览器来测试,都能实现此功能。项目可以直接导入Myeclipse测试使用。
资源推荐
资源详情
资源评论
收起资源包目录
解决重复登录问题案例.zip (31个子文件)
解决重复登录问题案例
JavaSingleLogin
.settings
org.eclipse.wst.jsdt.ui.superType.name 6B
org.eclipse.wst.common.project.facet.core.xml 252B
org.eclipse.wst.common.component 483B
org.eclipse.wst.jsdt.ui.superType.container 49B
.jsdtscope 500B
org.eclipse.jdt.core.prefs 395B
src
com
xingyou
single
map
SessionMap.java 364B
dao
UserDao.java 1KB
DB.java 527B
servlet
Login.java 2KB
CheckLogined.java 2KB
listen
SessionListen.java 1KB
service
UserService.java 2KB
entity
Users.java 890B
.project 2KB
WebRoot
META-INF
MANIFEST.MF 36B
WEB-INF
web.xml 1KB
classes
com
xingyou
single
map
SessionMap.class 540B
dao
UserDao.class 2KB
DB.class 937B
servlet
CheckLogined.class 2KB
Login.class 2KB
listen
SessionListen.class 2KB
service
UserService.class 2KB
entity
Users.class 1KB
lib
mysql-connector-java-5.1.6-bin.jar 687KB
result.jsp 1KB
login.jsp 1KB
sql
singleLogin.sql 287B
.mymetadata 318B
.classpath 529B
.myeclipse
共 31 条
- 1
资源评论
- 梦想涨价了2020-03-24好资源,可以用。
性感枭娚亻
- 粉丝: 4
- 资源: 39
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功