博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C/S模式下session通讯问题,或使用token的原因
阅读量:4692 次
发布时间:2019-06-09

本文共 2805 字,大约阅读时间需要 9 分钟。

临时解决方案:

创建一个session管理工具类(OnlineSession ),用一个POJO类(SessionAndUser )封装session和用户信息,作用:把用户和session进行绑定。
类:OnlineSession

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
import 
java.util.ArrayList;
import 
java.util.Collections;
import 
java.util.List;
 
import 
javax.servlet.http.HttpSession;
 
import 
com.data.entity.table.People;
 
 
public 
class 
OnlineSession {
 
    
private 
static 
List SessionList;     
// 在线用户session集合
 
    
// 在线用户集合类不能被实例化
    
private 
OnlineSession() {
    
}
 
    
static 
{
        
if 
(
null 
== SessionList) {
            
// 用于获得指定集合的同步集合(线程安全的)的支持,返回同步集合
            
SessionList = Collections.synchronizedList(
new 
ArrayList());
        
}
    
}
 
    
    
public 
static 
boolean 
addSessionAndUser( HttpSession session , People people ){
        
if
( session == 
null 
){ 
return 
false 
; }
        
System.out.println(
"调试 : >>>>>>>>      SessionID:"
+session.getId()+
"获取授权"
);
        
SessionAndUser sau = 
new 
SessionAndUser() ;
        
sau.setPeople(people);
        
sau.setSessionID( session.getId() );
        
sau.setSession( session );
        
//设置用户最长连接中无动作时长(60min)
        
session.setMaxInactiveInterval(
60
*
60
);
        
return 
SessionList.add( sau );
    
}
    
    
    
public 
static 
List getList() {
        
return 
SessionList ;
    
}
    
    
    
public 
static 
People getLoginPeople( String userName ){
        
for
( SessionAndUser temp : SessionList ){
            
if
( temp.getPeople().getUserName().equals( userName ) ){
                
return 
temp.getPeople() ;
            
}
        
}
        
return 
null 
;
    
}
    
    
    
public 
static 
SessionAndUser getSessionAndUser( String id ) {
        
for
( SessionAndUser temp : SessionList ){
            
if
( temp.getSessionID().equals( id ) ){
                
return 
temp ;
            
}
        
}
        
return 
null 
;
    
}
    
    
    
public 
static 
String getSessionID( String userName ){
        
for
( SessionAndUser temp : SessionList ){
            
if
( temp.getPeople().getUserName().equals( userName ) ){
                
return 
temp.getSessionID() ;
            
}
        
}
        
return 
null 
;
    
}
    
    
    
public 
static 
boolean  
removeSessionAndUser( String userName ){
        
for
( SessionAndUser temp : SessionList ){
            
if
( temp.getPeople().getUserName().equals( userName ) ){
                
System.out.println(
"调试 : >>>>>>>>      SessionID:"
+temp.getSessionID()+
"失效"
);
                
boolean 
flag = SessionList.remove( temp );
                
temp.getSession().invalidate();        
//销毁session       
                
return 
flag ;
            
}
        
}
        
return 
false 
;
    
}
 
}

类:SessionAndUser

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import 
javax.servlet.http.HttpSession;
import 
com.data.entity.table.People;
 
 
public 
class 
SessionAndUser {
    
private 
People people; 
// 登录用户
    
private 
String sessionID; 
// session ID
    
private 
HttpSession session; 
// 当前用户session
 
    
public 
People getPeople() {
        
return 
people;
    
}
 
    
public 
void 
setPeople(People people) {
        
this
.people = people;
    
}
 
    
public 
String getSessionID() {
        
return 
sessionID;
    
}
 
    
public 
void 
setSessionID(String sessionID) {
        
this
.sessionID = sessionID;
    
}

 

转载于:https://www.cnblogs.com/nimenhao/p/4912963.html

你可能感兴趣的文章
Now or later UVALive - 3211(2-SAT 最小值最大化)
查看>>
K8S Kubernetes 简单介绍 转自 http://time-track.cn/kubernetes-trial.html Kubernetes初体验
查看>>
UIImageView动画制作
查看>>
东北育才 day6
查看>>
[总结] 替罪羊树学习笔记
查看>>
PhpStorm 2017汉化补丁 2017.1 免费中文版
查看>>
Web 简单文件下载
查看>>
[NOI2005] 维护数列
查看>>
MapReduce编程:数字排序
查看>>
Nginx配置详解
查看>>
02_数据库基础之(一)数据库安装与客户端安装
查看>>
获取本周、本月、本年的时间段
查看>>
开篇有益
查看>>
junzheng
查看>>
破解极验滑动验证码
查看>>
(int)a与(int&)a
查看>>
js中的同步与异步
查看>>
一百行代码爬取漫画喵
查看>>
《大道至简》第一章读后感
查看>>
cors跨域 + 异步上传文件
查看>>