こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

配列セッションのクリア方法

こんにちは。

現在JAVAの勉強をしているのですが、配列変数をセッションに
入れました時の、各配列番号セッションごとのクリアの方法は、
どのようにすれば良いのでしょうか。

ネットや参考書をみまして、普通にセッションのクリアをいたします
時には、
HttpSession ses = request.getSession();
ses.removeAttribute("abc");
の形でクリアが出来ました。

けれども変数が配列になっていますと、この方法で、クリアが行えませ
ずに、考えております。

また、自分なりに「ses.removeAttribute("abc[1]");」などと記述をい
たしましてもクリアが行えませんでした。

どのような記述方法でクリアが行えるのでしょうか。
よろしくお願いいたします。

投稿日時 - 2007-04-26 22:02:23

QNo.2953122

困ってます

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

配列のある添え字だけの値をクリアする場合には、一旦セッションから配列を取得してクリアします。

具体的には、
HttpSession ses = request.getSession();
String[] abc = ses.getAttribute("abc");
abc[1] = null;

セッションから配列自体をクリアするには、
ses.removeAttribute("abc");
でいいです。

投稿日時 - 2007-04-27 00:08:42

お礼

ありがとうございました。
お返事に感謝をしています。
そのように記述をすれば良かったのですね。

ただ、同一ページファイルでは、可能だったのですが、あるページファ
イルで、設定をしました配列セッションを、他のページで呼び出す事が
出来ましても、クリアをする事ができなくて、まだ考えています。

これが、普通のセッションでしたら他のページでも、クリアが出来たの
ですが、どのような事が問題なのでしょうか。

投稿日時 - 2007-04-27 19:51:31

ANo.2

// ----- セット側 ----- //
HttpSession ses = request.getSession();
String[] strs = new String[3]; // ← 配列変数
ses.setAttribute("abc", strs); // ← でabcという名称でセッションにセット

// ----- クリア側 ----- //
HttpSession ses = request.getSession();
ses.removeAttribute("abc"); // ← でabcという名称でセッションに格納されている情報をクリア

普通にできると思いますが?

投稿日時 - 2007-04-26 23:01:18

お礼

ありがとうございました。
お返事に感謝をしています。

ただ、同一ページファイルでは、可能だったのですが、あるページファ
イルで、設定をしました配列セッションを、他のページで呼び出す事が
出来ましても、クリアをする事ができなくて、まだ考えています。

これが、普通のセッションでしたら他のページでも、クリアが出来たの
ですが、どのような事が問題なのでしょうか。

投稿日時 - 2007-04-27 19:53:00

ANo.1

それなりの経験者です。
「ses.removeAttribute("abc[1]");」ではなくて
「ses.removeAttribute(abc[1]);」ではどうでしょうか?
私の見当違いであればお詫びします。
以下のサイトをお知らせします。
http://www.jajakarta.org/tomcat/servletapi/servletapi-4.0/docs-ja/

参考URL:http://www.jajakarta.org/tomcat/servletapi/servletapi-4.0/docs-ja/

投稿日時 - 2007-04-26 22:23:11

お礼

ありがとうございました。
お返事に感謝をしています。

投稿日時 - 2007-04-27 19:57:17

あなたにオススメの質問