2009-11-24 123 views
0

The HttpSession session = request.getSession(true); 和 HttpSession session = request.getSession();如果不存在,則 都會創建一個新會話。Session Problem

我的問題是,我想無效()會話,如果它的存在,然後創建一個新的。

我可能..我的意思是有任何出路,以實現這一目標.. ??

回答

6

這個怎麼樣?

HttpSession session = request.getSession(false); // Will not create a new session. 
if(session!=null) 
{ 
    session.invalidate(); 
} 
session = request.getSession(true); 
4

先殺死你的舊會話

session.invalidate(); 

,並與

HttpSession session = request.getSession(true); 

不工作重新打開它之後?

2

首先做一個session.invalidate();,然後根據需要做了response.sendRedirect("url");url在那裏你可以做request.getSession();得到一個新的會話。

注意,這種方法不能保證在JSP文件中工作,僅僅是因爲響應是在大多數情況下已經提交(以便容器不能設置jsessionid cookie的新價值在響應頭)。您確實需要在Servlet或Filter中執行此操作。

這就是說,爲什麼你要使會話無效,然後立即在同一個請求中獲得一個新會話?這聽起來像是解決某個問題的解決方法,可能會有更好的解決方案。