亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

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()沒有序列化的,讀取的時候是序列化的

正在回答

2 回答

在以后你需要從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);
}


0 回復 有任何疑惑可以回復我~

發現答案在第二部分的1分40秒,這里忘了把id和session做關聯

0 回復 有任何疑惑可以回復我~
#1

未卜先知 提問者

看了下源碼,其實就是重置了session的id為序列化后的id
2018-08-09 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

protected Serializable doCreate(Session session) 這個方法中的sessionId是做什么的?

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號