• ベストアンサー

servletからjspへオブジェクトの配列情報を送る方法

いつもお世話になっております。echo2002です。 さて、今回は以下のような処理を行いたいのですが、可能なのでしょうか? ”servletで作成したオブジェクトの配列をjspにforwardして表示させる” こんなような処理を考えています。 構成:FileListServletクラス, FileInfomationクラス, disp.jsp FileInfomationクラスではファイル名やファイルサイズなどの情報を持ち、 それぞれgetなどのアクセサメソッドを持つとします。 FileListServletクラスでの処理 FileInfomationクラスの配列を作成し、各情報をsetする。 HttpServletRequestにsetAttributeでFileInfomation情報を付加し、 disp.jspへforwardする。 ※以下の方法を考えています。 request.setAttribute("fileinfo1", fileinfo[0]); request.setAttribute("fileinfo2", fileinfo[1]); request.setAttribute("fileinfo3", fileinfo[2]); ・・・ (配列でsetAttributeできるのかわからなかったので、  とにかくファイルの数分setAttributeしてみました) getServletContext().getRequestDispatcher("/disp.jsp").forward(req, res) わからないこと: disp.jspでどのようにFileInfomationの情報を取得し、 内容を参照できるのかがよくわからないのです。 jspの暗黙オブジェクトrequestを使用して、request.getParameterをすると、 返ってくる値がStringのようなので、FileInfomationクラスにならないんですよね? 突っ込みどころ満載の質問かと思いますが、何かアドバイス頂ければと思います。 オブジェクトの配列をsetAttributeしてjspで読み出せる方法があれば、 それもご教授いただけますでしょうか。 よろしくお願いいたします。jsp難しいです・・・。

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

  • ベストアンサー
回答No.3

setなんちゃらメソッドで値を設定したら、getなんちゃらメソッドを呼べば良かったのです。つまり、set/get以下が同名のメソッド同士をセットで使えば良いのです。 今回の場合は、getAttributeメソッドですね。 戻り値はObjectですがこれはキャストすれば良いのです。 FileInfomation 変数 = (FileInfomation)request.getAttribute("fileinfo1"); てな具合です。 なお、getParameterメソッドは、クライアント(ブラウザ)から送信されたパラメータを取得するメソッドです。 さて、話を次の段階に進めて、配列を受け渡しできるか?となりますが、、できます。 サーブレット側で、 request.setAttribute("キー文字列", fileinfo); として、JSP側で、 FileInfomation[] 変数 = (FileInfomation[])request.getAttribute("キー文字列"); とすれば、良いのです。

echo2002
質問者

お礼

run34rickyさん回答ありがとうございます。 私が望んでいた形にほとんどぴったりなやり方のようです。まだ試してみていないのですが、これからやってみようと思います。できるとうかがっただけでかなりやる気が出てきました(^^; ありがとうございました。

その他の回答 (2)

  • ishito
  • ベストアンサー率0% (0/1)
回答No.2

まず、fileinfoの配列ですが、配列ではなく VecterやListなどの可変長配列にセットしていって みてはいかがでしょう? ※例えばVecter Vecter vecData = new Vecter(); :(Vecterオブジェクトにセット) request.setAttribute("fileinfo1", vecData ); サーブレット側ではこうなります。 Jsp側ではVecterのオブジェクトを用意してあげて キャストしてあげてください。 vecter = (Vecter)request.getAttribute("fileinfo1"); こんな感じ。どうでしょうか?

echo2002
質問者

お礼

ishitoさん回答ありがとうございます。 Vecterというオブジェクトは知らなかったので、 これから調べてみようと思います。 ありがとうございました。

回答No.1
echo2002
質問者

お礼

torakiyojpさん、回答ありがとうございます。 このページ、ここに質問させていただく前にも一応目を通していたのですが、オブジェクトが”配列”だった場合はどうなるのかがよくわからなかったんです。 教えていただいて、ありがとうございました。

関連するQ&A