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()沒有序列化的,讀取的時候是序列化的
2019-04-16
在以后你需要從redis中拿去session時是要使用的
protected?Session?doReadSession(Serializable?sessionId)?{ ????if?(sessionId?==?null)?{ return?null; ????} ????byte[]?key?=?getKey(sessionId.toString()); ????byte[]?value?=?jedisUtil.get(key); ????return?(Session)?SerializationUtils.deserialize(value); }2018-07-22
發現答案在第二部分的1分40秒,這里忘了把id和session做關聯