• ベストアンサー

配列をセッションに割り当てた後で

javaBeanでDBにアクセスして、取得した値を配列に格納します。その配列をサーブレット側でgetメソッド使って取得し、セッションに割り当てます。その後、JSP側でセッションを通して配列の各要素を取り出し表示させたいのですが<%= session.getAttribute("Date") %>←(Dateが配列)では配列の各要素ではなく配列そのものが取り出されるのか、 [Ljava.lang.String;@737371 のような文字が表示されてしまいます。 セッションで割り当てられた配列の各要素の値の取得のやり方がわかる方どうかご教授お願いします。

  • Java
  • 回答数2
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.1

setAttribute() で、保存したものがそのまま getAttribute() で取得できる わけですから、配列をセットしていれば、ゲットできるのは配列です。 例えば、一番目の要素の値であれば、 <%= session.getAttribute("Date")[0] %> です。

amuro1980
質問者

補足

やってみたところ [] は配列にのみ適用できます。java.lang.Object には適用できません。out.print( session.getAttribute("Date")[0] ); のエラーがでました。 どうも取り出す以前に配列としてセッションに割り当てられていないみたいです。 セッションに配列を割り当てるやり方はBeanで private String[] Date = null; を宣言してこの中に値を格納し、同じくBeanの public String[] getDATE() {return Date;} のメソッドを使って、サーブレットで session.setAttribute("Date", my_bean.getDATE()); としてセッションに配列を割り当てたつもりだったのですがだめみたいです。もしよろしければどのようにプログラムを修正すればよいか教えてください。

その他の回答 (1)

  • Harry_
  • ベストアンサー率55% (36/65)
回答No.2

配列型にキャストしてから、各要素にアクセスします。 String[] array = (String[])session.getAttribute("Date"); System.out.println(array[0]);

amuro1980
質問者

お礼

うまくいきました。 初歩的な質問に答えてくださってありがとうございました。

関連するQ&A

  • アプレットからのセッションデータ参照

    javaBeanでDBにアクセスして、取得してきた値をサーブレットでセッションに割り当てます。そのセッションのデータをアプレットから取得したいのですがどうやればよいかわかりません。やり方がわかる方教えてください。参考URLを教えてくれると助かります。

    • ベストアンサー
    • Java
  • strutsでの2次元配列について

    java側で2次元配列String[][] totalを生成して、Formにセットしています。 それをJSPで表示させるには <bean:write name="Form" property="total[0][0]" /> とすればできると思ったのですが、[Ljava.lang.String;@16b65f3のように 何かのアドレスのようなものが表示されます。 1次元の配列なら問題なく表示できたのですが、 なにかまずいところがあるのでしょうか。 わかる方いらっしゃいましたら、どうかお願いいたします。

    • ベストアンサー
    • Java
  • MVCモデルでのサーブレットのやること

    Javaを習い始めた者です。 MVCモデルでのサーブレットのやるべきことが、いまいちつかめないので質問させていただきます。 私が思っているサーブレットのすることは、 (1)送られてきたた情報をgetParameter()する。 (2)JavaBeanを生成したり、getAttribute()する。 (3)getParameter()したものをJavaBeanにsetする。 (4)JavaBean内のメソッドを実行する。 (5)JavaBeanをsetAttribute()する。 (6)別のJSPなどにfoward()する。 です。 (基本的に計算や比較などの処理は、サーブレット上では行わず、JavaBean内のメソッドで行う) この考え方は間違っていますか? あと例えば、ログイン認証のプログラムを作るとき、上の考え方だと、getParameter()したIdとPasswordをJavaBeanにsetして、JavaBean内のメソッドで、setしたIdを元にDBからPasswordをgetしてきます。そしてこのPasswordと、setしたPasswordを比較することになると思います。 でも、私的にはJavaBean内のメソッドで、引数にgetParameter()したIdを与えて、DBからgetしたPasswordを戻り値にします。そしてサーブレット上で、このPasswordとgetParameter()したPasswordを比較しようと思いました。 でもこれだと、サーブレット上でPasswordを比較するという処理を行っているのでMVCモデルに反しているのでしょうか? わかりにくい説明で申し訳ないのですが、教えてください。 お願いします。

    • ベストアンサー
    • Java
  • 画面遷移でセッション切れになります

    いつもお世話になっております。 サーブレットを使用した画面遷移で jsp(ログイン)→servlet(ログイン確認)→jsp(メニュー) →servlet(データ取得)→jsp(データ一覧表示) という流れで画面遷移を行っていたのですが、 二つ目のjsp(メニュー)まではセッションが残っているのですが 次のservletに遷移した瞬間セッションがが切れてしまいnullを検出してしまいます。 はじめのservlet(ログイン確認)にて getAttributeを使用しセッションを残していたのですが、 セッション切れの原因がわかりません。 セッション切れする原因はなんなのでしょうか。 皆様の知恵をお借りできれば幸いです。

    • ベストアンサー
    • Java
  • 使用するデータの保管

    JSP/サーブレットを勉強しています。 サーブレットからJSPにデータを渡すとき、以下のようなコードでやっています。 サーブレット側 request.setAttribute("xxxx",xxxx); や session.setAttribute("xxxx",xxxx); JSP側 request.getAttribute("xxxx"); や session.getAttribute("xxxx"); 書籍などで 「sessionにはあまりデータを保管しないほうがいい」 と書いてあったりするのですが、コードマスタ等のどこでも使うようなデータを長期にわたって保管するのに、他にやり方があるのでしょうか?

    • ベストアンサー
    • Java
  • JSPでHashMap・配列の変数の値を扱う方法について

    サーブレット側でHashMap型の「map」に値をセットしてしています。 mapは配列となっています。 ■サーブレット -------------------------------------- HashMap map[] = new HashMap[10];  ・・省略・・ getRequest().setAttribute("map",map) -------------------------------------- 上記でセットした値をJSP側で値を参照したいと思っているのですが、 HashMap・配列の値をJSP側でどのように読み込む/記述したら良いのか 分かりません。 初歩的な質問で申し訳ございませんが、よろしくお願いいたします。

    • ベストアンサー
    • Java
  • セッション属性

    HttpSession 属性に HashMap がバインドされています。 そこで、HttpSession の getAttribute で取得した HashMap オブジェクトで、任意のキーにバインドされている値をgetして、putで入れなおして変更すると、 結局、セッション属性にバインドされている HashMap の値が更新されることになる。 (setAttribute メソッドは使わない) 上記は正しいですか? とりあえず、簡素に質問しました。

  • javaでセッションに入れたものを表示したい

    Javaのサーブレットの勉強をしています。 勉強始めたばかりで教えて頂きたいのですが、 セッションに入れたものを表示したい場合どうすればよろしいでしょうか? session.getAttribute("user") "user"にユーザーidを入れています。 これをprintlnで表示させたいです。 ご教授よろしくお願い致します。

  • サーブレットで

    こんにちは サーブレットで入力しセッションに追加 それをJSPの別画面で表示したいと考えています。 セッションに追加後 JSPでセッションの値をEnumerationで取得→表示 はできるのですが サーブレットで追記されていってもJSPはブラウザで更新してあげないと表示されない状態です 追記されていくたびに JSPのファイルも更新されていくにはどのような方法があるのでしょうか アドバイスお願いします

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

    失礼致します。 セッションについてお聞きします。 httpsessionの受け渡しについてなのですが、画面jspページから ログイン名とパスワードを取得し、サーブレットに渡しています。 サーブレットの書き出しは次のようになっています。 public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { HttpSession session3 = req.getSession(true); ・・・ このあとsession3セッションにパスワードをセットし、 jspページでセッションチェックした後falseならログイン画面に リダイレクトします。ここまでは出来ました。 ところが、このログイン名を文字列操作したいと思い、 サーブレットからjspページにディスパッチする前に一旦 文字列操作用javaページで文字列操作をしようと思いました。 ところが、サーブレットでない純粋なjavaページではhttpsessionが使えないことが分かりました。 HttpSessionを型に解決できませんと言われます。 この問題は一度は直面したことのある方も多いのではないかと思い、質問させて頂きました。 このような場合、どのように対処されていますでしょうか?

専門家に質問してみよう