プロが教えるわが家の防犯対策術!

いつもお世話になっております。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難しいです・・・。

A 回答 (3件)

setなんちゃらメソッドで値を設定したら、getなんちゃらメソッドを呼べば良かったのです。

つまり、set/get以下が同名のメソッド同士をセットで使えば良いのです。
今回の場合は、getAttributeメソッドですね。
戻り値はObjectですがこれはキャストすれば良いのです。
FileInfomation 変数 = (FileInfomation)request.getAttribute("fileinfo1");
てな具合です。

なお、getParameterメソッドは、クライアント(ブラウザ)から送信されたパラメータを取得するメソッドです。

さて、話を次の段階に進めて、配列を受け渡しできるか?となりますが、、できます。
サーブレット側で、
request.setAttribute("キー文字列", fileinfo);
として、JSP側で、
FileInfomation[] 変数 = (FileInfomation[])request.getAttribute("キー文字列");
とすれば、良いのです。
    • good
    • 5
この回答へのお礼

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

お礼日時:2004/09/21 09:53

まず、fileinfoの配列ですが、配列ではなく


VecterやListなどの可変長配列にセットしていって
みてはいかがでしょう?
※例えばVecter

Vecter vecData = new Vecter();
:(Vecterオブジェクトにセット)
request.setAttribute("fileinfo1", vecData );

サーブレット側ではこうなります。

Jsp側ではVecterのオブジェクトを用意してあげて
キャストしてあげてください。

vecter = (Vecter)request.getAttribute("fileinfo1");

こんな感じ。どうでしょうか?
    • good
    • 2
この回答へのお礼

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

お礼日時:2004/09/21 09:51
    • good
    • 0
この回答へのお礼

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

お礼日時:2004/09/21 09:31

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A