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フェッチでデータが上書きされます

こんにちは。perl + html + mysqlのコーディングで悩んでいるので質問させてください。
複数フィールド+複数件(例えば13フィールド+3件)のデータがテーブルに存在する時、SELECT文でそのデータを取得したいとします。
分からない所はフェッチの部分なのですが、

$i=0;
while($selectdata[$i]=$sth->fetchrow_arrayref(
$i++;
}

----[中略]-----

for($i=0;$i<$rows;$i++){
print "[SELECTデータ->$i]\n";
for($j=0;$j<13;$j++){
print "$selectdata[$i][$j]\n";
}
print "<BR>\n";
}

表示されたデータが3件とも、3番目のデータが表示されます。
フェッチで取得したデータを配列にいれる段階で、上書きしているような気がするのですが、具体的にどこが悪いか分かりません。
ご教授お願いいたします。

こんにちは。perl + html + mysqlのコーディングで悩んでいるので質問させてください。
複数フィールド+複数件(例えば13フィールド+3件)のデータがテーブルに存在する時、SELECT文でそのデータを取得したいとします。
分からない所はフェッチの部分なのですが、

$i=0;
while($selectdata[$i]=$sth->fetchrow_arrayref(
$i++;
}

----[中略]-----

for($i=0;$i<$rows;$i++){
print "[SELECTデータ->$i]\n";
for($j=0;$j<13;$j++){
print "$selectdata[$i][$j]\n";
}
...続きを読む

Aベストアンサー

いや、
>$i=0;
>while($selectdata[$i]=$sth->fetchrow_arrayref(
>$i++;
>}
これを

my @selectdata;
while ( my $array_ref = $sth->fetchrow_arrayref ) {
push @selectdata, [ @{$array_ref} ];
}

みたいな感じで受け取ったリファレンスを一旦デリファレンスして、
その要素を含む新しい無名配列を生成すれば良いと思いますけど。

QiPhone「データの取得方法」について

こんにちは。先々月くらいにiPhoneを購入した者です。
iPhoneの「データ取得方法」について質問があります。
予想外にパケット通信料の請求が多かったため、サファリや天気など通信
を必要とするアプリを使用しないようにし、「データの取得方法」をフェ
ッチの15分ごとに変更しました。ただ、「データの取得方法」のプッシュ
とフェッチの違いがよく分かっておらず、プッシュをONにしたままが通信
の節約になるのか、それともフェッチの15分間隔(若しくは30分)が良い
のか分かりません。メールの量は送受信併せて1日30~40で、使わない時
は全く使いません。ただ緊急を要するメールもあるので手動でのメール
取得は考えていません。
前述したように、プッシュとフェッチどちらがパケットの節約になるのか
教えていただきたいと思います。その他パケット通信節約のための小ネタ
などがあれば教えてください。
よろしくお願い致します。

Aベストアンサー

ExchangeServerやMobileMeなど、サーバ側から自動的に送られてくるメールがプッシュメール、通常のメールのように自分から取りに行くメールがフェッチです。
プッシュであれば一定時間ごとにメールボックス確認に行く手間がないため、その分安くはなります。
が。通常のメールをプッシュで使うことはできないので、基本的に選択肢はあってないようなものです。
ExchangeServerやMobileMe使ってなければ、回答としては変わらないってことになります。

ただ、基本的に通信をおこないまくる携帯なので、パケット通信はかかるもんだと思っておいたほうがいいです。

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

QPL/SQL内の共通関数の引数にフェッチしたレコードごと渡すのは可能?

カーソルでレコードを検索し、フェッチします。
その後、INSERTする共通関数を呼ぶのですが、
フェッチしたレコードの値でINSERTしたいのです。
引数で1コずつ渡すと数が多いので、フェッチしたレコードごと引数で渡せないかと
それって可能ですか?

Aベストアンサー

こんにちは。

 共通関数の引数にカーソルのレコード型(cursor_name%ROWTYPE)を
使用すればよいと思います。
ただこの場合は、汎用性に乏しいのですが・・・。

 よって個人的にはINSERT先のテーブル名のレコード型が
お勧めです。[テーブル名%ROWTYPE]
 カーソルのレコードから移し変える処理が必要になりますが、
登録処理が簡単に記述できますネ。
(INSERT INTO TAL_NAME VALUE record_type;)

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...続きを読む

Qデータハザードについて(パイプライン)

こんにちは。コンピューターアーキテクチャのパイプラインの項目の勉強をしていて、データハザードについて分からない問題があったので、質問させていただきます。

以下の二つのパイプラインの動作がよくわかりません。


基本的にはフォワーディングによって解決するデータハザードですが、メモリアドレス生成のときはフォワーディングは間に合わないので、結果の格納(W)が終わらないと命令フェッチ(F)ができないそうです。つまり
add r1, r2 .r3    F D E W
lw r4, dpl(r1)         F X X DEW

となるそうです。しかし
ld r2, c(r1)
subi r1, r1, 4
のように「ロード命令の次に算術命令」という順番ですと、ハザードは生じないそうです。


下の場合は上と違いr1のデータを更新するだけなのでフォワーディングによって改善ができるという解釈でよろしいのでしょうか?
上は本に書いてあったものなのですが、下のはインターネットから調べたものなのであっていない可能性があるので質問しました。

ちなみに両者ともロード命令の場合なのですが、ストア命令でも同じような振る舞いになるのでしょうか?

よろしくお願いいたします。

こんにちは。コンピューターアーキテクチャのパイプラインの項目の勉強をしていて、データハザードについて分からない問題があったので、質問させていただきます。

以下の二つのパイプラインの動作がよくわかりません。


基本的にはフォワーディングによって解決するデータハザードですが、メモリアドレス生成のときはフォワーディングは間に合わないので、結果の格納(W)が終わらないと命令フェッチ(F)ができないそうです。つまり
add r1, r2 .r3    F D E W
lw ...続きを読む

Aベストアンサー

「データハザード」ってのは, 端的にいうと「ある命令で得られた結果をそのあとの命令で使うために, 前の命令が終わるまで『あとの命令』の実行を止めなきゃならない」って状態.

ここに挙がっている例だと, 上のやつは add で得られた r1 を次の lw で使うから, 「r1 が得られるまで lw を実行できない」ということになる. ところが下の場合には ld の結果である r2 はそのあとで使わないから, ここで見えている分についてはハザードは生じていない (さらにあとの命令で r2 を使っていたら, ld とのタイミングでハザードが起きるかもしれん). あるいは,
ld r1, c(r2)
subi r1, r1, 4
なら明らかにハザードが起きる.

そして, はっきりいうと「ロードの場合はメモリからレジスタにデータを移すので算術命令のデータがメモリに書き込まれるまではストールしてしまう」というのは何をいっているのかよくわからん. もっというと「算術命令のデータがメモリに書き込まれる」とか「算術命令がメモリにデータを書き込む」とかの意味がわからん. どういうこと? どうせ MIPS かなんかの RISC なんだろうから, そもそも「算術命令の結果」がメモリに書き込まれることはありえないよ.

それぞれの命令を実行するために「確定していなければならないデータ」がなんなのか, そしてそれらが「どのタイミングで確定するのか」を確認してください. ここの例だと「add の結果がどこで出てきてどのタイミングにフォワーディングできるのか」とか「メモリアドレスをどのタイミングで生成するのか」とか, です.

とはいえ, 上の例で「どのステージが同時に起きているのか」がわからないんだよね.... add の D と lw の F が同じクロックと思っていい?

参考URL:http://akademeia.info/index.php?%A5%D1%A5%A4%A5%D7%A5%E9%A5%A4%A5%F3%A5%CF%A5%B6%A1%BC%A5%C9

「データハザード」ってのは, 端的にいうと「ある命令で得られた結果をそのあとの命令で使うために, 前の命令が終わるまで『あとの命令』の実行を止めなきゃならない」って状態.

ここに挙がっている例だと, 上のやつは add で得られた r1 を次の lw で使うから, 「r1 が得られるまで lw を実行できない」ということになる. ところが下の場合には ld の結果である r2 はそのあとで使わないから, ここで見えている分についてはハザードは生じていない (さらにあとの命令で r2 を使っていたら, ld とのタイミングで...続きを読む

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で参照する。

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

Q「スーパーフェッチ」と「プリフェッチ」の違い

Vistaで「スーパーフェッチ」機能とはよく使用するアプリケーションをメモリにプリロードするとありますが、XPの「プリフェッチ」機能にも似たような記載がありました。
この両者の機能で決定的な違いは何処でしょうか?
ご存知あれば教えて頂ければ幸いです。

Aベストアンサー

どのデータをプリロードするかを選択する戦略が賢くなったということです.

XPでは単に最も最近使ったデータを優先的に選んでいましたが,Vistaでは今までの履歴を学習してより最適な(次に必要になりそうな)データを選ぶようになりました.

参考URL:http://pc.watch.impress.co.jp/docs/2007/0226/mobile366.htm

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ランキング