通過session的id號獲取對應的session


 

說說為什么要用session!!!

每次訪問端通過普通http協議訪問tomcat時,訪問端包括網頁或Android app等,tomcat都會自動生成一個不同的session,而且session的id都不同,一般存活周期五個小時

web的便捷之處就是只要瀏覽器不關閉或者不注銷session,session的id都是固定的,

可是Android的就是個奇葩,每次訪問id都會變,可是為什么Android還要執意用session呢?

因為我當時想做一個驗證功能,讓驗證碼存在后端的某個地方,同時還可以自動銷毀,方便獲取

因為servlet的版本升級原因,直接通過session的id獲取之前已經存在的session的這個方法已經被官方api拋棄了,所以,想要實現這個給功能,需要自己手動創造這么個方法!!!

話不多說,上代碼

 

步驟1.

找個地方寫兩個Java的類文件

第一個類:

代碼:


import javax.servlet.http.HttpSession;
import java.util.HashMap;

public class MySessionContext {
private static HashMap mymap = new HashMap();
public static synchronized void AddSession(HttpSession session) {
if (session != null) {
mymap.put(session.getId(), session);
}
}
public static synchronized void DelSession(HttpSession session) {
if (session != null) {
mymap.remove(session.getId());
}
}
public static synchronized HttpSession getSession(String session_id) {
if (session_id == null)
return null;
return (HttpSession) mymap.get(session_id);
}
}

 

第二個類:

代碼:

import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

public class MySessionListener implements HttpSessionListener {
public void sessionCreated(HttpSessionEvent httpSessionEvent) {
MySessionContext.AddSession(httpSessionEvent.getSession());
}
public void sessionDestroyed(HttpSessionEvent httpSessionEvent) {
HttpSession session = httpSessionEvent.getSession();
MySessionContext.DelSession(session);
}
}

 

 步驟2:

寫好后,去web.xml文件里寫一個監聽器,監聽器的位置不要寫錯,中間白色的是寫上面的第二個類的路徑,我把它放在mySession的文件夾里,

所以才寫mySession.MySessionListener

 代碼:


<listener>
<listener-class>mySession.MySessionListener</listener-class>
</listener>

好了,代碼過程部分都好了,現在需要去調用了

現在假設你知道一個session 的id為 a,a是個String類型數據;

那么可通過下面的第三步獲得session

步驟3:

HttpSession session = MySessionContext.getSession(a);

這個session就是你要根據id找的session了,如果你之前在session通過方法setAttribute(“key”,“value”)存進去了數據

那么你就可以直接用getAttribute("key")獲取這個數據

這時你要注意了,getAttribute("key")獲取的值是object類型的,如果你要轉成String,

你只需要在獲取的值后面加  .String()方法進行轉換!!!!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM