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と関連する良く見られている質問

Qを <%= %>で出力。コンパイルエラー

<bean:define>を <%= %>で出力するのは、だめですか?

 <bean:define id="maxnum" name="ActionForm" property="num" type="java.lang.String"/>
 alert('<bean:message key="A00011" arg0="<%=num%>" />');
                               ^^^↑ここ

実際に動かすと正常に動くのですが、
WebSphereDeveloperでビルドをすると、
 JspCompile: シンボルを解決できません。; シンボル: 変数 num;
といわれます。

どうすれば、エラーがでないように出来ますか?

Aベストアンサー

<bean:define>タグが、alertの前で />で閉じているのが気になりますが。。。

<jsp:attribute>タグを利用してみるとか。

<bean:define id="maxnum" name="ActionForm" property="num" type="java.lang.String">
 alert('<bean:message key="A00011">
<jsp:attribute name="arg0"><%= num %></jsp:attribute></bean:message>');
</bean:define>

参考URL:http://www.techscore.com/tech/J2EE/JSP/3-6.html

Qjsp + servlet + Beans

なぜ、jsp + servlet + Beansというような使い方をするのでしょうか?

jsp + Beansでは、表示用にjsp、複雑な処理はBeansという感じにすることの意味はわかります。
同様に、jsp + servletもわかります。

servletで行う処理と、Beansで行う処理はどこで線を引けば良いのでしょうか?

よろしくお願いします。

Aベストアンサー

>Beansとクラスっていうのは、別ですよね?
Beanとクラスは一緒です。

>クラスでやる場合はどのような不都合があるのでしょうか?
JavaBeansとは基本的には値の受け渡しで使用します。
主にsetter(set~)メソッドとgetter(get~)メソッドで成り立ちます。
またその中にビジネスロジックを搭載しsetした値から何かの数値を計算するとかしてそれをgetで取得するって感じです。

一応参考までにJavaBeansクラスはこんな感じです。

public class SampleBeans{
private String name;//名前
 private int number://番号

public String getName(){
return this.name;
}

public int getNumber(){
return this.number;
}

public void setName(String name){
this.name = name;
}

public void setNumber(int number){
this.number = number;
}

}

>Beansとクラスっていうのは、別ですよね?
Beanとクラスは一緒です。

>クラスでやる場合はどのような不都合があるのでしょうか?
JavaBeansとは基本的には値の受け渡しで使用します。
主にsetter(set~)メソッドとgetter(get~)メソッドで成り立ちます。
またその中にビジネスロジックを搭載しsetした値から何かの数値を計算するとかしてそれをgetで取得するって感じです。

一応参考までにJavaBeansクラスはこんな感じです。

public class SampleBeans{
private String name;//名前
 private...続きを読む

Qjsp,servlet,beanの流れについて

初歩の初歩の質問ですが、参考書等読んでいて混乱してしまっています。宜しくお願いします。

a.jsp(入力画面)
a_servlet.java
a_bean.java(setのみ)
b.jsp(表示画面)
b_servlet.java
b_bean.java(get,setのみ)

というファイルがある時のプログラムの流れは、
(1)a.jsp・・・画面を表示する。データを入力する。登録ボタンを押下する。
(2)a_servlet.java・・・(1)で登録ボタンを押下されたら、a.jspのデータを取得。a_bean.javaへ設定する。b.jspへ飛ぶ。
(3)a_bean.java・・・(2)によりデータが設定されている。
(4)b_servlet.java・・・a_bean.javaのデータを取得し、b_bean.javaに設定する。
(5)b_bean.java・・・(4)によりデータが設定されている。
(6)b.jsp・・・表示データをb_bean.javaより取得後、画面を表示する。削除ボタンを押下する。
(7)b_servlet.java・・・(6)で削除ボタンが押下されたらb.jspのデータを取得し、b_bean.javaへ設定する。

特にbファイルの処理順序で混乱しています。
上記のような流れで考え方は合っているでしょうか。
少々分かりずらいかもしれませんが、間違っていたら小学生でも分かるように教えてください。

初歩の初歩の質問ですが、参考書等読んでいて混乱してしまっています。宜しくお願いします。

a.jsp(入力画面)
a_servlet.java
a_bean.java(setのみ)
b.jsp(表示画面)
b_servlet.java
b_bean.java(get,setのみ)

というファイルがある時のプログラムの流れは、
(1)a.jsp・・・画面を表示する。データを入力する。登録ボタンを押下する。
(2)a_servlet.java・・・(1)で登録ボタンを押下されたら、a.jspのデータを取得。a_bean.javaへ設定する。b.jspへ飛ぶ。
(3)a_bean.java・・・(2)によりデータが設...続きを読む

Aベストアンサー

こんにちわ。
bubu2さんが言いたいのは「b.jspの初期値をどこから取得するか?」だと思うのですが、質問内の(4)で設定したb_beanをb.jspで参照できるようにb.jsp内で定義してあげればいいと思います。

(1)b_servlet内でb_beanを作って値を入れる。
(2)b_servlet内でb_beanをリクエストに入れてあげる。(3)(2)のリクエストをb.jspで参照する。

理解がずれてたらごめんなさい。

QServlet+Beans+JSPでのページング方法

Win2000+j2sdk1.4.2でEclipse2.1を使用して、
開発を行っております。

商品明細の画面を作っているんですが、
1ページ30明細にしたいと思っています。
つまり、検索サイトの検索結果画面のように、
30明細表示したら、次ページ+前ページの
リンクボタンを表示して、そのリンクボタンを押されたら、
同じJSP内で次ページの明細を表示するようにしたいんです。
いわゆるページング処理ってやつです。

で、今明細を表示する際には、BeansでDBを読み込んで、
そのRecordsetをJSPに渡して、getObject()を使用して、
明細表示しています。

ResultSet rs = (ResultSet)request.getAttribute("rs");
 while(rs.next()){
  out.println("<tr>");
   for(int i=0;i<columns.length;i++){
out.println("<td>"+rs.getObject(i+1));
   }
 }

上のような感じで明細書いてます。
ASPの場合だとページ処理用にRecordsetオブジェクトにプロパティがあったので、割と簡単だったのですが、
JAVAの場合getObject(x)のxの数値をうまく変更してページ処理をするのがベターな方法なんでしょうか?
それでもできないわけじゃないんですが…めんどくさいし…バグ増えそうだし…

質問内容をまとめると、
1.JAVAのWebページ処理はどうやってやるのか?または、やっていますか?
2.RecordSetオブジェクトにページ処理用のプロパティ等あるのか?

という2つになります。

そもそも、RecordSetオブジェクトをまんま使って、明細書かないよっ!てなツッコミでもいいです。

回答お待ちしてます。よろしくお願いします。

Win2000+j2sdk1.4.2でEclipse2.1を使用して、
開発を行っております。

商品明細の画面を作っているんですが、
1ページ30明細にしたいと思っています。
つまり、検索サイトの検索結果画面のように、
30明細表示したら、次ページ+前ページの
リンクボタンを表示して、そのリンクボタンを押されたら、
同じJSP内で次ページの明細を表示するようにしたいんです。
いわゆるページング処理ってやつです。

で、今明細を表示する際には、BeansでDBを読み込んで、
そのRecordsetをJSPに渡して、getObject()を...続きを読む

Aベストアンサー

>JAVAの場合getObject(x)のxの数値をうまく変更してページ処理をするのがベターな方法なんでしょうか?

ページ処理だったらrs.next()の方ですよね?
while(rs.next())の前でResultSet#absolute()を呼び出すか、もしくはResultSet#next()を必要回数
呼び出してはどうでしょうか?

<%
  ResultSet rs = (ResultSet)request.getAttribute("rs");
  rs.absolute(30 * (n - 1)); //nはページ番号
%>

<% while(rs.next()){ %>
  <tr>
  <% for(int i=0; i<columns.length; i++) { %>
    <td><%= rs.getObject(i+1) %></td>
  <% } %>
  </tr>
  <% if (rs.getRow() >= 30 * n) break; %>
<% } %>


リンクをクリックする度にDBから該当レコードのみ読み込むとか、setAttribute()の前に
処理するという方法でも良いと思います。

#一般的な方法かどうかについては、まったく自信がありません。

>JAVAの場合getObject(x)のxの数値をうまく変更してページ処理をするのがベターな方法なんでしょうか?

ページ処理だったらrs.next()の方ですよね?
while(rs.next())の前でResultSet#absolute()を呼び出すか、もしくはResultSet#next()を必要回数
呼び出してはどうでしょうか?

<%
  ResultSet rs = (ResultSet)request.getAttribute("rs");
  rs.absolute(30 * (n - 1)); //nはページ番号
%>

<% while(rs.next()){ %>
  <tr>
  <% for(int i=0; i<columns.length; i++) { %>
    <...続きを読む


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

人気Q&Aランキング

おすすめ情報