临时解决方案:
创建一个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; } |