ママのスキンケアのお悩みにおすすめアイテム

JSP+Bean+Servletで作っています。

BeanでDB接続、データを取得して、
それをJSPで一覧表示として表示させたいのですが、
どのタグを使えばいいのでしょうか。
また、その場合、タグは、Servletとか
Beanでかく必要がありますか。


たとえば、今、DBに30個データがある場合、
JSPでそれをTABLEタグを使って
一覧表示させますよね。

でもJSP側では、<TR><TD></TD></TR>の
データをいくつセットできるか、っていう
数がきまってますよね。てことは、
ServletとかBeanでHTMLのタグをうって
表示させないといけないんですか???


やりたいことは、BeanとかServletで
タグは書かずに、JSPでパラメータだけ
受け取って、その数だけデータを
表示させたいんです。
(JSPだけでタグをかいて、パラメータで
わたってきたデータを表示させたい。)

そういうことってできますか??
・・・説明がうまく出来てないかとは思うのですが
よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (5件)

どもども^^



例えば、JSPが受け取ったデータ(Stringの配列やら、HashTableやら)を
ループを使って表示させればいいのでは??

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
<table>
<%
for(int i=0; i < 結果.length; i++){
%>
<tr>
<td><%= 結果[i] %></td>
</tr>
<%
}
%>
</table>
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

こんな感じでHTMLのタグをJAVAのforループの中にほりこんで
やれば、出来ると思うけど、だめ??

がんばってください。
わかりにくい説明だったら、ごめんね。

この回答への補足

mkimさん、早い回答ありがとうございます。

日々、分からないことだらけで追われております。。

そうですよねー。なんか勘違いしてたのかも。
JSPの中でまわしたらいいですよね。
ちょっとやってみます。

また質問するかもしれませんがよろしくお願いします。

補足日時:2001/08/17 10:22
    • good
    • 0
この回答へのお礼

すみません。。また質問です。

<table>
<%
for(int p=0; p < wk.getData_cnt(); p++){
%>

<tr>
<td><%= wk.getList() %>out.print("www");</td>
</tr>

<%
}
%>
</table>

こういう感じでJSPは書いてます。
wk.getData_cnt()はちゃんと件数がとれてました。

Beanで読んだデータをArg_Dataという配列に
入れてSetメソッドでセットしています。

そしてJSPでGetしようと思ったんですが、
[Ljava.lang.String;@6fb836out.print("www");[Ljava.lang.String;@6fb836out.print("www");[Ljava.lang.String;@6fb836out.print("www");



こんな感じで表示されます。
配列の要素数をセットしていないので
こうなるんだとおもうんですが、
Forでまわすところ、配列の要素数
はどうやってセットしたらいいんでしょうか?
wk.getList()このなかのかっこにカウンタ変数
とかいれるとエラーになっちゃうんですが、、、

基本的なことを聞いてすみません。

お礼日時:2001/08/17 12:03

どもども^^



>もう一つ質問なんですが、このTABLEでの
>一覧表示、ずらーーーーーと
>でますよね。
>これを固定にする方法ってあります?
>例えばスクロールバーがつくとか、
>あとは。。。。思い付きませんが。。。

テキストエリアのvalueに取得したデータを突っ込むと
一応、大きさ指定して横にスクロールバーを付ける事は、
できます。
しかし、それも、見た目はあまりかっこよくないかと。。。
どっちも、カッコよくないですね^^;;
もう、それくらいしか思い浮かびません。

#私のJBuilderは、すぐにフリーズする。。。メモリ増設もしたのに。。(苦笑)
#適当なエディタでごりごり書く方が、似合ってるのかな。。。

この回答への補足

アプレットで同じことをやったときは、
テキストエリアをEnabled==Falseにして
表示用にしてたんですが、
Enabled==Falseの概念ないですよね?
サーブレット。。(あるのかな。)

なので、<SELECT><OPTION>タグを
使おうかと思っています。
ここから、データを抽出できるとかに
しようかと思います。

ありがとうございます。

JBuilder確かに重いです。
適当なエディタ。。。ちなみに
mkimさんは何をお使いなんでしょうか。

Javaを書いている人が使ってるソフトで
最もポピュラーなのはなんなんでしょうかね。

補足日時:2001/08/17 14:51
    • good
    • 0

今日はあまり時間がないので、少しだけ(笑)



public String[] getList(int i) {
return list[i];
}

エラーおきるの当然です。
戻り値がString配列なのに、list[i]はStringです。
ただしくは

public String getList(int i) {
return list[i];
}

です。
try{}catch{}で「i」が配列のサイズ以上だったら、ブランクを送るなり(不明)というStringを返すなりしたら、デバッグが少し楽になるかも。

で、余談ですが前の質問のお礼にかかれていたことについて。
私は仕事でServlet-JSP-Beanのコーディングをしています。
勉強というか、書いてるうちに身についたという感じです。
私ももっともっと精進しますので、お互いにがんばりましょう!

この回答への補足

ほんと、すみませーん。(>_<;)
ここ、何日かご迷惑かけっぱなし、ですね。
感謝しております。。

>エラーおきるの当然です。
>戻り値がString配列なのに、list[i]はStringです。

ですねー。
String[]は配列で、
String[n]ていうのはStringですね。
初歩的なことでつまづいちゃって
お恥ずかしいです。

>私は仕事でServlet-JSP-Beanのコーディングを
>しています。
>勉強というか、書いてるうちに身についたという
>感じです。

そうなのですか。
今までVBしか知らなくて、VBだと
けっこうサンプルプログラムってありますが
Java、、、特にServlet-JSP-Bean
については、あまり出回ってないので
頭をかかえています。
MLとかで質問するとヒンシュクものの
質問に答えていただいて
本当にありがとうございました!!!

私もがんばります。

補足日時:2001/08/17 14:10
    • good
    • 0

どもども^^



public String[] getList(int i) {
return list[i];
}
これは、無しでやってみますか!
Stringの方のgetList()は、残しておいてね。

ちょっと原始的かもしれないので、自分で変更してくれてもOKです!

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
<%
String[] aaa = wk.getList(); //Stringの配列をaaaにセット
%>
<table>
<%
for(int p=0; p < wk.getData_cnt(); p++){
%>
<tr>
<td><%= aaa[p] %>out.print("www");</td>
</tr>
<%
}
%>
</table>
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

さっきの変なの(Ljava.lang.String;@6fb836out )が、
表示されてたのは、String型の配列を表示しようとして、
あんなものが表示されていたんですね!


#これで、いけるかと。。。
だめだったら、また質問してください。

この回答への補足

多分、私がやってるwk.getList()[p]ていうのと
結果一緒ですよね?

wk.getListでの戻り値が配列自体でしたね。
すみませんでした。

ありがとうございました!!!!!
大変感謝しております。

補足日時:2001/08/17 14:08
    • good
    • 0

はい。

2回目のどもどもです^^

>wk.getData_cnt()はちゃんと件数がとれてました。
おめでとうございます。件数がとれていれば、だいぶ成功に
近づいてきましたね。

>wk.getList()このなかのかっこにカウンタ変数
>とかいれるとエラーになっちゃうんですが、、、
getList()のメソッドは、元々getList(int i)と言う
使い方が、できるのでしょうか??

最近、JAVAから離れ気味で、忘れてきた(笑)
Ljava.lang.String;@6fb836out ←こう言う風になるのって
型がおかしいからやったっけな。。
もしそうなら、(String)などのようにキャストしてね。自信無し。

あと、out.print("www"); これの部分なんやけど、
そこは、HTML部分なので、wwwって普通に書くだけで
OKかと。。。。
out.print("www")このように表示させたい場合は、そのままね!

#力不足ですいません^^;;

この回答への補足

回答ありがとうございます。

>getList()のメソッドは、元々getList(int i)と言う
>使い方が、できるのでしょうか??

JBuilderで作っているんですが、
Beanでプロパティの追加の設定をすると、
勝手にデフォルトでSetとGetメソッドが
作られるんです。
今回はlist[]という配列をプロパティとして追加
したんですけど、そうすると、以下のような
メソッドがデフォルトでできます。

public String[] getList() {
return list;
}
public void setList(String[] list) {
this.list = list;
}

このGetメソッドを使ってJSPはパラメータ
(今回はlist[]という配列です。)を
取得したいのです。mkimさんが書かれたように

public String[] getList(int i) {
return list[i];
}
というふうにおくと、コーディングのエラーが
でてしまいます。

何か、外してますでしょうか???

補足日時:2001/08/17 13:00
    • good
    • 0
この回答へのお礼

何度もすみません。
できました。
BeanのSet&Getメソッドはそのままで
JSPで
wk.getList()[p]というふうに
したらできました。

wk.getList()はただ単に配列自体を
渡してるのでJSPで要素をセットしないといけない
んですよね。
すみません。

もう一つ質問なんですが、このTABLEでの
一覧表示、ずらーーーーーと
でますよね。
これを固定にする方法ってあります?
例えばスクロールバーがつくとか、
あとは。。。。思い付きませんが。。。

なんかアイディア、ありましたら
教えていただきたいのですが。。

かなり長くて、かっこわるいんです。
一覧。。。

お礼日時:2001/08/17 13:36

このQ&Aに関連する人気のQ&A

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

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QjavaでDBから取得したデータのJSP表示

JAVAでDBから取得し
ArrayList shikakuCdList = shikakuCd_Data();
request.setAttribute("shikakuCdList", shikakuCdList);

JSPでコンボボックスに表示しようと思います
<% ArrayList bumonlist = (ArrayList)request.getAttribute("bumonCdList");%>


<% for ( int i = 0; i < bumonlist.size(); i++ ){%>
<option value=" (1)ここの記述方法も  "></option>
<% }%>

という記述にしていますが、うまく動きません。
よろしくお願いします。

Aベストアンサー

><% for ( int i = 0; i < bumonlist.size(); i++ ){%>
><option value=" (1)ここの記述方法も  "></option>
><% }%>
この部分ですが、

もし、shikakuCd_Data()の返すArrayListの中身が
JavaBean(下記はTestBean)であれば、

<% for ( int i = 0; i < bumonlist.size(); i++ ){%>
<% TestBean test = (TestBean)bumonlist.get(i); %>
<option value="<%= test.ゲッター %>"></option>
<% }%>

もしくは、useBeanアクションをつかい、
coreライブラリのforEachタグを使って出力する方法もあります。
こちらの方法がお勧めですが。

Qフォーム上で押されたボタンによってサーブレットの処理を変えたい

Urizakaです。
さて、さっそく質問です。
JSPの同一フォーム上に「登録」「修正」「削除」のボタンを置き、その押された
ボタンによってサーブレット内での処理が切り替わる(具体的には、違う
SQL文を実行し、違うJSPページをgetRequestDispatcherメソッドで生成
する)ようにしたいのですが、どのようにすればよいのでしょうか?
もちろんそれぞれの処理に対して別々のサーブレットを作り、javaScript
でそれぞれのサーブレットへ飛ぶように制御するという処理も考えたことは
考えたのですが、できれば一つのサーブレットで済ませたいと考えたもので
…宜しくお願いします。

Aベストアンサー

お恥ずかしい限りです。
前述の例、動くわけがありませんね(汗)

2つめの例、書きなおします。

---------------------------------------------------

■JSPのフォーム

<form name=MyForm action="<<サーブレットのURL>>" method=post>
<input type=button name=MyClick value=登録 onClick="func('Toroku');">
<input type=button name=MyClick value=修正 onClick="func('Shusei');">
<input type=button name=MyClick value=削除 onClick="func('Sakujo');">
<input type=hidden name=MySubmit>
</form>

<script language="JavaScript">
function func(MyCommand){
document.MyForm.MySubmit.value=MyCommand;
document.MyForm.submit();
}
</script>

■Servletでの処理
// リクエストの取得
String MyAction = req.getParameter("MySubmit");

// 処理の実行
if (MyAction.equals("Toroku")){...}
if (MyAction.equals("Shusei")){...}
if (MyAction.equals("Sakujo")){...}



---------------------------------------------------

こんな感じでどうでしょうか。
ちなみにこうやって書いておくと、フォームのボタンからじゃなくても
アンカーをクリックすることで同じ効果が出せそうな……

<a href="JavaScript:func('Toroku')">登録</a>

あ、でもまたボロが出そうなのでこの辺で(^_^;)

お恥ずかしい限りです。
前述の例、動くわけがありませんね(汗)

2つめの例、書きなおします。

---------------------------------------------------

■JSPのフォーム

<form name=MyForm action="<<サーブレットのURL>>" method=post>
<input type=button name=MyClick value=登録 onClick="func('Toroku');">
<input type=button name=MyClick value=修正 onClick="func('Shusei');">
<input type=button name=MyClick value=削除 onClick="func('Sakujo');">
<input type=hidden name=M...続きを読む

QJSPでのリストボックス表示

いつもお世話になっております。
サーブレット&JSPでプログラミングの勉強をしています。

JSPでリストボックスを表示させる際に、リストのアイテムをハードコーディングではなく、DBから取得したデータをArrayList等に格納し、表示させたいと思っています。

この場合、ループでArrayListのアイテムを1件ずつ取り出して、JSP内の<select><option></option></select>に当て込む方法が良いのでしょうか?

ちなみに以下のテーブル内容で、リストボックスには“作業内容”を表示させて、選択されたときには、“作業コード”を取得させたいのですが、どのようにすれば良いでしょうか?

テーブル
--------------------
作業コード|作業内容
--------------------
0000000001|プログラミング
0000000002|実装
0000000003|テスト

よろしくお願いします。

Aベストアンサー

<select>
<option value="0000000001">プログラミング</option>
<option value="0000000002">実装</option>
<option value="0000000003">テスト</option>
</select>

↑こういう状態を作れば、見た目には内容が、値には番号が入ります。

あとは単純にぐるぐるまわせばいいだけですね。

<select name=hoge>
<%for(i=0;i<arrayA.length();i++){%>
<option value="<%=arrayA[i]>">arrayB[i]</option>
<%}%>
</select>

スクリプトで
form.hoge[i].value = <%=arrayA[i]%>;
form.hoge[i].text = <%=arrayB[i]%>;
とかで埋め込むこともできます。
内容を書き換えたりすることがあるのなら、スクリプトを併用したほうが良いですね。

QJava-jspの画面入力値保持について

画面にテキスト、ラジオボタン、リストボックス とボタンがあります。
ボタンを押すと、JAVAで処理を行い、jspのviewで表示します。

1.テキスト、ラジオボタン、リストボックスなどに値が入力、設定されている状態で
ボタンを押して処理後にテキスト、ラジオボタン、リストボックスの値が
変わらないようにしたいのですが、
その場合、たとえば、入力、設定値をセッションになどに格納しておき
jspの所で、セッションから値を設定すると言うような方法になるのでしょうか?

2.ボタン押して処理後、ラジオボタン、リストボックスの選択値も
  変えないようにしたいのですが、
  これはどのように実現するのが、適切なのでしょうか?


以上、よろしくお願いします。

Aベストアンサー

ボタンというのはフォームのサブミットボタンのことですよ?
つまり、画面遷移が起きることを前提とすると(元の同じ画面に戻るのも含みます)

テキスト、ラジオボタン、リストボックスの状態を「要求パラメータ」として
送信し、それを次画面に反映するというのが最も一般的な方法です。

フレームワーク struts のアクションフォーム&JSPカスタムタグを使うと比較的楽に
そういう画面が作れますが、多くのフレームワークでも大差ありません。
簡単な画面なら素のサーブレート+JSPでも十分作れます。

セッションでもできますが、 セッションはログイン情報などの保持など、
限定された範囲で使うのが普通です。また、結局セッションに最新の
テキスト、ラジオボタン、リストボックスの状態を送るには、「要求パラメータ」
を送信する必要があります。

AJAXを使うという方法もあります。この場合、ボタンは AJAX 処理だけを行い
画面遷移を起こさないので、サーバ側で画面のテキスト、ラジオボタン、
リストボックスの状態をもつ必要はありません。

QJSPで