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