• 締切済み

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

こんにちは。 現在JAVAの勉強をしているのですが、配列変数をセッションに 入れました時の、各配列番号セッションごとのクリアの方法は、 どのようにすれば良いのでしょうか。 ネットや参考書をみまして、普通にセッションのクリアをいたします 時には、 HttpSession ses = request.getSession(); ses.removeAttribute("abc"); の形でクリアが出来ました。 けれども変数が配列になっていますと、この方法で、クリアが行えませ ずに、考えております。 また、自分なりに「ses.removeAttribute("abc[1]");」などと記述をい たしましてもクリアが行えませんでした。 どのような記述方法でクリアが行えるのでしょうか。 よろしくお願いいたします。

  • Java
  • 回答数3
  • ありがとう数5

みんなの回答

noname#30536
noname#30536
回答No.3

配列のある添え字だけの値をクリアする場合には、一旦セッションから配列を取得してクリアします。 具体的には、 HttpSession ses = request.getSession(); String[] abc = ses.getAttribute("abc"); abc[1] = null; セッションから配列自体をクリアするには、 ses.removeAttribute("abc"); でいいです。

jsg100
質問者

お礼

ありがとうございました。 お返事に感謝をしています。 そのように記述をすれば良かったのですね。 ただ、同一ページファイルでは、可能だったのですが、あるページファ イルで、設定をしました配列セッションを、他のページで呼び出す事が 出来ましても、クリアをする事ができなくて、まだ考えています。 これが、普通のセッションでしたら他のページでも、クリアが出来たの ですが、どのような事が問題なのでしょうか。

noname#33813
noname#33813
回答No.2

// ----- セット側 ----- // HttpSession ses = request.getSession(); String[] strs = new String[3]; // ← 配列変数 ses.setAttribute("abc", strs); // ← でabcという名称でセッションにセット // ----- クリア側 ----- // HttpSession ses = request.getSession(); ses.removeAttribute("abc"); // ← でabcという名称でセッションに格納されている情報をクリア 普通にできると思いますが?

jsg100
質問者

お礼

ありがとうございました。 お返事に感謝をしています。 ただ、同一ページファイルでは、可能だったのですが、あるページファ イルで、設定をしました配列セッションを、他のページで呼び出す事が 出来ましても、クリアをする事ができなくて、まだ考えています。 これが、普通のセッションでしたら他のページでも、クリアが出来たの ですが、どのような事が問題なのでしょうか。

  • WildBoar
  • ベストアンサー率63% (7/11)
回答No.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/
jsg100
質問者

お礼

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

関連するQ&A

  • Sessionについて

    今、JSPを用いてログイン画面を作成しているのですが、Sessionの使い方がいまいちわかりません。 HttpSession ses = request.getSession(); ses.setAttribute("id",id); これでSessionに格納するのはわかりますが Sessionから値を取り出す方法がわかりません。 どなたか助けてください

    • ベストアンサー
    • Java
  • セッション管理

    失礼いたします。 セッション情報の受け渡しを勉強しています。 送り手側で HttpSession ses = request.getSession(); String login = (String)ses.getAttribute("login"); String name = (String)ses.getAttribute("name"); if( !("ttttt".equals( login )) ) {  //(以下処理) 受けて側で String name = request.getParameter("user"); String pass = request.getParameter("pass"); HttpSession ses = request.getSession(); if ( name.equals("admin") && pass.equals("hoge")) { ses.setAttribute("login","ttttt"); ses.setAttribute("name",name); out.println("<h3>ログインしました。</h3>"); } とし、セッション管理を行っています。 しかし、今ひとつこの「セッション情報」と普通のパラメーターの受け渡しの違いが分かりません。どちらも文字として次ページへ送っていますので。セッションがずっと保持されるとはソースのどういう所から分かるのでしょうか?漠然とした質問ですが、よろしくお願いします。

    • ベストアンサー
    • Java
  • セッションIDの付け替えについて

    はじめまして。 Servlet でセッションIDの付け替えをしたいのですが、 HttpSession session = request.getSession(); out.println(session.getId()); session.invalidate(); HttpSession newSession = request.getSession(true); out.println(newSession.getId()); のように、 一度invalidate()してから、 新しいセッションを取得しても 同じセッションIDとなってしまいます。 違うセッションIDを振るにはどうしたらよいでしょうか。

  • Javaでのセッションについて

    質問があります。 ServletでSessionを用いるときににまず初めに、 /*セッションの開始*/ HttpSession session = req.getSession(); というふうにすると思います。 ここで、HttpServletRequestのメソッドとしgetSessionがあるわけですが、 セッションというのはリクエストから受け取り開始するものなのですか? 私の解釈では、リクエスト→セッション→コンテキストという順番でスコープが広くなっていると認識しています。 なのになぜ、リクエストからセッションを受け取るのかが疑問でなりません。 また、ブラウザで×ボタンを押すとセッションは終了すると思いますが、 この時にもし、セッション上に明示的に解放しなければならないBeanなどをあげていた場合、 どうやって解放してあげればいいのでしょうか。 たぶん、大きな勘違いをしていると思うのですが、 どなたかご教授願いますでしょうか。 よろしくお願いいたします。

    • ベストアンサー
    • Java
  • jpsの中で requestは?

    JSPの中で、  <% HttpSession session = request.getSession(); %> をしたいのですが、文字化けをしたエラーがでます。 request変数を知らないからですか?? どうすればsessionを取得できるんでしょうか? どなたか教えて下さい。

    • ベストアンサー
    • Java
  • Servlet-JSP のセッション管理

    すいません。 セッションというものを使ってみたいなと思い、 本などを、見よう見真似で下のようなものを作ってみましたが、 まったく動きません。どこがいけませんか? ーーservlet-ー HttpSession session = req.getSession(); if (session.isNew()) {  session.setAttribute("test","ssm3u"); } ーーforwardされるJSP-ー <% HttpSession session = request.getSession(); %> <%= (String)session.getAttribute("test"); %> "ssm3u"と出したいのですが、全然違うのでしょうか? 自分ではCookieを利用するセッション管理を作ったつもりです・・

    • ベストアンサー
    • Java
  • セキュリティーを確保したセッション管理

    現在、javaにて開発を計画中です。 作成するアプリケーションは、 ログイン画面 ↓ ユーザ、パスワード入力 ↓ 認証(データベースに登録された内容チェック) ↓ ユーザごとに許可されたページへの遷移 といった流れを想定しています。 セッション管理を行なう上で、 Javaでは、「HttpSession」を利用して、   // セッション開始   HttpSession session = request.getSession(true);   // セッションに情報を設定   session.setAttribute("USER_ID" , xxxx);   session.setAttribute("PASSWORD" ,yyyy); といった情報をセッションに保存し、ページ移動時にチェック する事を考えました。 あとCookieを利用する方法も考えましたが、CookieにID、passwordを保存することは セキュリティー上問題あると思います。 セッション管理について説明しているページには、Cookieには、セッションIDを保存し・・・とった 記述があるのをよくみます。 セキュリティー上、Cookieを利用する意味もよく分かっていません。 みなさんは、どのようにセッション管理をされているのか教えてください。 出来るだけセキュリティーを確保したいと思っています。 よろしくお願いします。

    • ベストアンサー
    • Java
  • セッションを使ったint型の値の保持

    こんにちは。 少し文が長いですがよろしくお願いします。 AccessのDBから取得したint型の値を、セッションを使って保持したいのですが while(rs.next()){ String name = rs.getString("NAME"); int value = rs.getInt("VALUE"); HttpSession session1 = req.getSession(true); HttpSession session2 = req.getSession(true); session1.setAttribute("Name", name); session2.setAttribute("Value", value); dispatcher2.include(req, res); } のコードの session2.setAttribute("Value", value); でコンパイルエラー DBAccess.java [37:1] javax.servlet.ServletRequest の setAttribute(java.lang.String,java.lang.Object) は (java.lang.String,int) に適用できません。 がでてうまくいきません。 セッションを使ってint型の値の保持を行うにはどうすればよいのでしょうか?

    • ベストアンサー
    • Java
  • セッションの情報の消去について

    ログイン時にユーザ名をセッションを登録して、ログアウトのときにremoveAttributeでセッションから名前を消去したいのですが消えません。 ログイン時 String data = "USER NAME"; HttpSession session = request.getSession(); session.setAttribute("user",data); ログアウト時 session.removeAttribute("user"); strutsのexcuteメソッドに書いています。ログインとログアウト以外の処理は書いていません。 public ActionForward excute(ActionMapping map, ActionForm form, HttpServletRequest request, HttpServletResponse resonse) throws Exception { ここにログインとログアウトの処理を記述 } なぜ消えないのか悩んでいます。ご存知の方ご教授いだけないでしょうか。

    • ベストアンサー
    • Java
  • セッション管理

    度々の質問で申し訳ないです…。 「セッション管理」がどうしてもよく分かりません。 書籍やWeb上でいろんな説明を読んで頭では理解したつもりなんですが 実際使う段になるとつまづいてしまいます。 そこで質問です。 html → Servlret1 → JSP1 → Servlet1 → JSP2 → JSP3 このような遷移の中でセッション管理を行いたいと思っています。 今、JSP2までは無事にセッションオブジェクトに保存されたデータを 参照することができていますが、JSP2からJSP3に移るときに nullが渡されてしまうのです。 一度、Servlet1 へ制御を戻さなければだめなのでしょうか? 具体的なコードを以下に掲載します。 よろしくお願いします。 ========= Servlet1 でセッション開始 //セッションを得る HttpSession thisSession = req.getSession(true); //セッションに保存 req.getSession(false).setAttribute("Login","true"); ========= JSP2 で受け取る /* ここではちゃんと"true"が返ってきます。 */ //セッションオブジェクトから取り出す String login = (String)request.getSession(false).getAttribute("Login"); ========= JSP3 で受け取る /* ここで null が帰ってきてしまいます。 String login = (String)request.getSession(false).getAttribute("Login");