1.Java通過sessionid獲取session對象


之前在實現uploadify文件上傳時,遇到火狐瀏覽器不兼容的問題,在網上找了些資料,自己動手把他解決了,其中有一個就是session的重新發起。特此記錄。

因為Servlet2.1之后不支持SessionContext里面getSession(String id)方法。

所以我們可以通過HttpSessionListener監聽器和全局靜態map自己實現一個SessionContext。

 1 public class MySessionContext {
 2     private static HashMap mymap = new HashMap();
 3     public static synchronized void AddSession(HttpSession session) {
 4         if (session != null) {
 5             mymap.put(session.getId(), session);
 6         }
 7     }
 8     public static synchronized void DelSession(HttpSession session) {
 9         if (session != null) {
10             mymap.remove(session.getId());
11         }
12     }
13     public static synchronized HttpSession getSession(String session_id) {
14         if (session_id == null)
15         return null;
16         return (HttpSession) mymap.get(session_id);
17     }
18 }

監聽器:MySessionListener.java

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);
    }
}

最后在web.xml文件里面添加我們創建的監聽器:

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

接下來你就可以在Action中根據sessionId獲取Session對象了:

String sessionId = request.getParameter("sessionId");傳遞的sessionid
HttpSession session = MySessionContext.getSession(sessionId);

 在火狐瀏覽器uploadify文件上傳就會用到這個東西,當然這是我個人的處理方式,可能還有更牛逼的方法;

 


免責聲明!

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



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