2012-12-05 27 views
0

我遇到禁用的Cookie問題。我有一個用戶使用其用戶帳戶登錄的頁面。連接本身保存在會話中,如果登錄成功了。Javaobject「連接」對禁用的Cookies不起作用

request.getSession().setAttribute("connection" , connection); 

對象DBConnection的,在會議命名的連接,是一個對象,它得到了一個靜態連接CON對象

protected static Connection con = null; 

當用戶登錄,連接獲取與

成立
con = DriverManager.getConnection(url, this.user, this.password); 

這也適用於已停用的cookie。如果在檢查我要救一個System.out.println.

System.out.println(("DBConnection == null: " + connection == null)); 
System.out.println("Connection" connection.getCon()); 
//result -> 
//DBConnection == null: false 
//[email protected] 

連接和CON對象,因此登錄爲sucessfull。現在用戶離開這邊,並由於一個按鈕轉到一些其他信息頁面。在這裏我需要這個連接,我得到它在一個Servlet中。

DBConnection connection = (DBConnection)request.getSession().getAttribute("connection"); 

與以前相同的System.out.println它給出了與以前相同的結果,當啓用cookie時。當cookies被禁用時,它會拋出異常併產生下面的結果:

DBConnection == null: false 
java.lang.NullPointerException 

所以現在我的問題。爲什麼我的連接中斷,當我禁用了我的Cookie? 在我心中,cookies沒有任何東西來處理連接對象,或者保存在JSP中的其他對象? 拋出Nullpointer的連接對象是包中的對象java.sql.Connection;

+0

你真正的問題卻是更大的。您正在HTTP會話中存儲外部數據庫資源。這是一個非常糟糕的主意!它應該在儘可能短的範圍內創建,使用和關閉,並且絕對不能存儲在HTTP會話中,該會話的壽命可能超過數據庫連接允許打開的時間(並且可能因此導致泄漏或可用連接的跳動當有很多會話時)。 – BalusC

回答