- PR -

servletからJSP

投稿者投稿内容
ドナ
常連さん
会議室デビュー日: 2003/07/08
投稿数: 42
投稿日時: 2003-08-15 18:30
お世話になっています。UKです。

servletでファイルのデータを読み取ってJSP側で一覧を表示したいのですが、
どのような方法が一番良いのでしょうか?
たとえばJSPで
商品コード 商品名 値段
a000001 あ   250
b000002  い   190
といった表示を行いたいのです。
BeansにしてJSPに転送しようともおもいましたが、Beans配列のJSPでの受け取り方がわからず断念しました
次にservlet側でStringの2次元配列に値を格納してJSPにわたして見ようとしたのですが、
JSPでの2次元配列の受け取り方がわかりませんでした。
<servlet>
String s[][] = new String[4][4];
request.setAttribute("s", s);
getServletContext().getRequestDispatcher("/NextJSP.jsp").forward(request, response);

<JSP>
String s[][] = request.getAttribute("s");
または
String s[][] = request.getParameterValues("s");

と試したのですがうまくいきません。どなたかご教授宜しくお願いします。
またほかに良い方法があれば教えてください

uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2003-08-15 19:39
紛らわしいですが、小文字のukです。

UKさんの書き込み (2003-08-15 18:30) より:
お世話になっています。UKです。

>servletでファイルのデータを読み取ってJSP側で一覧を表示したいのですが、
どのような方法が一番良いのでしょうか?

方法としては、

>BeansにしてJSPに転送しようともおもいましたが、Beans配列のJSPでの受け取り方がわからず断念しました

これがいいと思います。下の質問もそうですが、HttpServletRequest#getAttributeの
戻り値はObject型ですので、受け取るときにはキャストが必要です。
ドナ
常連さん
会議室デビュー日: 2003/07/08
投稿数: 42
投稿日時: 2003-08-15 20:33
ukさんありがとうございます。名前ややこしくてすみません…

>>BeansにしてJSPに転送しようともおもいましたが、Beans配列のJSPでの受け取り方がわからず断念しました

>これがいいと思います。下の質問もそうですが、HttpServletRequest#getAttributeの
戻り値はObject型ですので、受け取るときにはキャストが必要です。

やはりこちらの方がいいのですね。
ではservlet側で

MyBean mybean[] = new MyBean[5];
(Beanに値を設定)
request.setAttribute("mybean", mybean);
getServletContext().getRequestDispatcher("/NextJSP.jsp").forward(request, response);

とした時はJSP側でどのように受け取るのでしょうか?

uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2003-08-15 20:39
UKさんの書き込み (2003-08-15 20:33) より:
>ukさんありがとうございます。名前ややこしくてすみません…

いや、誰でも使いそうな名前にしている以上仕方ないですよね

>ではservlet側で
MyBean mybean[] = new MyBean[5];
(Beanに値を設定)
request.setAttribute("mybean", mybean);
getServletContext().getRequestDispatcher("/NextJSP.jsp").forward(request, response);
とした時はJSP側でどのように受け取るのでしょうか?

MyBean[] mybean = (MyBean[])request.getAttribute("mybean");

でいいと思います。キャストもご存じないとすると、ちょっと心配ですが…
ドナ
常連さん
会議室デビュー日: 2003/07/08
投稿数: 42
投稿日時: 2003-08-15 21:40

>キャストもご存じないとすると、ちょっと心配ですが…

すみません…卒業研究でJSP、サーブレット、Webサービスをすることになりただ今
手探り状態で勉強をはじめたばかりなので。

>MyBean[] mybean = (MyBean[])request.getAttribute("mybean");

これでも試したのですがクラスMyBeanについてシンボルを解決できませんといったエラーがでます。

<jsp:useBean id = "MyBean" class="Bean.MyBean" />もつけています。
試しにMyBean.setTitle("あいうえお");といったBeanに値を設定する文をJSPに挿入したら
そこの部分はエラーにはならないのですが、上記のMyBean[]の部分でやはりエラーがでます。
これは何が原因なのでしょうか?

ペコ
会議室デビュー日: 2003/08/14
投稿数: 7
投稿日時: 2003-08-15 23:05
引用:

UKさんの書き込み (2003-08-15 21:40) より:

>キャストもご存じないとすると、ちょっと心配ですが…

すみません…卒業研究でJSP、サーブレット、Webサービスをすることになりただ今
手探り状態で勉強をはじめたばかりなので。

>MyBean[] mybean = (MyBean[])request.getAttribute("mybean");

これでも試したのですがクラスMyBeanについてシンボルを解決できませんといったエラーがでます。

<jsp:useBean id = "MyBean" class="Bean.MyBean" />もつけています。
試しにMyBean.setTitle("あいうえお");といったBeanに値を設定する文をJSPに挿入したら
そこの部分はエラーにはならないのですが、上記のMyBean[]の部分でやはりエラーがでます。
これは何が原因なのでしょうか?





コンバンワ、UK様。ペコ、言いマス。

UK様が悩んでいること、数日前自分が躓いたところに酷似している
ようなので、横からレスです。
自分も、まだJAVAを勉強しだしの駆け出し故、正しいアドバイスが
出来るかは不安です。

なので、自分の立てたスレッドに諸先生方の答えてくださった一連の
流れがございます。
少しでも、参考になれば、と思いまして。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=5750&forum=12&12

私見ではJSPでBeanを参照する際は、Beanクラスのimportも記述せねば、と
思うのですが…あと、

<jsp:useBean id = "MyBean" class="Bean.MyBean" />

class="Bean.MyBean"の後にscopeの記述も必要じゃないか、と思うのですが…
raystar
ぬし
会議室デビュー日: 2003/01/16
投稿数: 251
お住まい・勤務地: Tokyo/Japan
投稿日時: 2003-08-16 01:46
引用:

BeansにしてJSPに転送しようともおもいましたが、Beans配列のJSPでの受け取り方がわからず断念しました
次にservlet側でStringの2次元配列に値を格納してJSPにわたして見ようとしたのですが、
JSPでの2次元配列の受け取り方がわかりませんでした。



こんばんわ。
勉強中であればコレクションを使うことを強くお勧めします。
配列より便利だと思います。

簡単な使い方

例えば、BeanでsetAll()、getName() みたいなメソッドをつくり、
Listをつかってみましょう。

Beanの簡単な例
------------------------
public class Bean {
private List names;

public List getNames() { // Listが戻されます
return this.names;
}
public setAll() {
// ここでConnectionなどをイニシャライズします(省略)
StringBuffer sql = new StringBuffer("");

sql.append("select name from user_table ");
stmt = conn.prepareStatement(sql.toString());

names = Collection.synchronizedList(new ArrayList());

rs = stmt.executeQuery();
while(rs.next()) {
names.add(rs.getString("name"));
}
// Connectionなど解放します(省略)
}

-------------------------------------------------
SQL で where 句が必要な場合は setXxxメソッドを増やして、Servletでぶちこんでください。

Listの取り出し方は

List list = bean.getNames();

回し方は

for(int i=0;i<list.size();i++){
out.print(list.get(i).toString()+"<br>");
}

これをUKさんや、ペコさんのいうようにJSP風にアレンジしてみてください。
配列よりシンプルコードになって、使うのも便利なはずです。

ご参考まで。
uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2003-08-16 02:21
UKさんの書き込み (2003-08-15 21:40) より:
><jsp:useBean id = "MyBean" class="Bean.MyBean" />もつけています。

「つけています」ってなんのために「つけている」んですか?

>試しにMyBean.setTitle("あいうえお");といったBeanに値を設定する文をJSPに挿入したら
そこの部分はエラーにはならないのですが、上記のMyBean[]の部分でやはりエラーがでます。
これは何が原因なのでしょうか?

まず、クラスというのはパッケージまで含めて完全な名前となります。プログラムの中で
パッケージを省略してクラス名を書けるのは、java.langパッケージのクラスか、その
クラスと同パッケージのクラスか、import文(JSPならimportディレクティブ)で指定した
クラスだけです(間違ってたらどなたか訂正してください)。

Bean.MyBean[] mybean = (Bean.MyBean[])request.getAttribute("mybean");

まず、これでエラーが出なくなるかどうか試してください。

スキルアップ/キャリアアップ(JOB@IT)