0

無効にされたCookieに問題があります。ユーザーが自分のユーザーアカウントでログインするページがあります。ログインが成功した場合、接続自体がセッションに保存されます。

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

セッションでconnectionという名前のオブジェクトDBConnectionは、静的なConnectionconObjectを持つオブジェクトです。

protected static Connection con = null;

ユーザーがログインすると、接続が確立されます

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

これは、非難されたCookieでも機能します。接続とconオブジェクトをチェックしていた場合は、System.out.println.

System.out.println(("DBConnection == null: " + connection == null));
System.out.println("Connection" connection.getCon());
//result ->
//DBConnection == null: false
//oracle.jdbc.driver.T4CConnection@15d51e5

したがって、ログインは成功しました。これで、ユーザーはボタンのためにこちら側を離れて他の情報ページに移動します。ここで、この接続が再び必要になり、サーブレットで取得しています。

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

以前と同じSystem.out.printlnを使用すると、Cookieが有効になっている場合、以前と同じ結果が得られます。Cookieが無効になっている場合、次の結果で例外がスローされます。

DBConnection == null: false
java.lang.NullPointerException

だから今私の質問。Cookieを無効にすると、接続が切断されるのはなぜですか?私の考えでは、Cookieには、接続オブジェクト、またはJSP内に保存されている他のオブジェクトビーイングを処理するものは何もありませんか?Nullpointerをスローする接続オブジェクトは、パッケージ内のオブジェクトですjava.sql.Connection;

4

1 に答える 1

1

この問題は、アプリケーションまたはWebサーバーがクライアント側でセッションIDをどのように保存するかに関連しています。これにはCookieを使用します。

無効になっているCookieクライアントのセッションバインディングを有効にする方法については、この同じサイトでこの関連する質問を確認できます。ブラウザでCookieを無効にしている人がいる場合、Javaでセッションを実行するにはどうすればよいですか。

于 2012-12-05T13:09:38.893 に答える