protected Serializable doCreate(Session session) 这个方法中的sessionId是做什么的?
protected Serializable doCreate(Session session) { Serializable sessionId = generateSessionId(session); byte[] key = getKey(session.getId().toString()); byte[] value = SerializationUtils.serialize(session); jedisUtil.set(key,value); jedisUtil.expire(key,600); return sessionId; }
但是在存入Redis用的确是session.getId()
private void saveSession(Session session){ if (session!=null&&session.getId()!=null){ byte[] key = getKey(session.getId().toString());//添加前缀 byte[] value = SerializationUtils.serialize(session); //将session序列化,以便存入redis jedisUtil.set(key,value); jedisUtil.expire(key,600); } }
我不明白下面这个操作是做什么用的:
Serializable sessionId = generateSessionId(session);
然后在获取的时候用的是这个 Serializable sessionId
protected Session doReadSession(Serializable sessionId) { System.out.println("read session"); if (sessionId==null){ return null; } byte[] key = getKey(sessionId.toString());//添加key的前缀 byte[] value = jedisUtil.get(key); return (Session)SerializationUtils.deserialize(value); //反序列化 }
存入的时候是使用的是直接从session.getId()没有序列化的,读取的时候是序列化的