このフォーラムは初めてです。私はJSPサーブレットアプリケーションを設計し、セッション変数を使用してオブジェクトを格納しています。問題は、セッション変数に2回アクセスすると、nullが返されることです。これが私のアプリの流れです-
複数のリンクボタンがあるjspページがあります。ユーザーがいずれかのボタンをクリックすると、サーブレットがそれぞれのパラメーターで呼び出されます。たとえば、button1がクリックされた場合は1が渡され、button2がクリックされた場合は2が渡されます。
サーブレットは、以前に作成されたセッション変数からarraylistを取得し、要求されたパラメータに応じてarraylistからデータを取得し、それを処理して、別のjsp、たとえばjsp2に応答を送信します。
jsp2にも同様のリンクボタンがあり、同じタスクを実行する必要があります。同じサーブレットがjsp2から呼び出された場合、またはページが更新された場合でも、今回はセッション変数がnullになります。
session-configタグの下のweb.xmlファイルで、セッションが期限切れにならないようにタイムアウトを-1に設定しました。
<session-config>
<session-timeout>-1</session-timeout>
</session-config>
サーブレットでは、セッション変数を次のように取得します-
HttpSession session = request.getSession(false);
ArrayList<String> list = new ArrayList<String>();
list = (ArrayList<String>)session.getAttribute("mylist");
サーブレットが2回呼び出されたとき、またはページが更新された場合でも、リストはnullになります。セッションが有効かどうかを確認するために数行を入力しました。2回目に印刷されます。
if(!request.isRequestedSessionIdValid()) {
System.out.println("Session is Expired !!");
}
とsession.getAttribute("mylist")
戻りますNullPointerException
。
session.invalidate()
たまたまセッションを終了するためにどこにも使用したことはないと確信しています。何が悪いのかわかりません。誰かが私を説明できますか?
よろしくお願いします。