アプリ版:「スタンプのみでお礼する」機能のリリースについて

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オブジェクトをまんま使って、明細書かないよっ!てなツッコミでもいいです。

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

A 回答 (1件)

>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()の前に
処理するという方法でも良いと思います。

#一般的な方法かどうかについては、まったく自信がありません。
    • good
    • 0
この回答へのお礼

返答ありがとうございます。
ふむふむ…おーっそうなのか…
absolute()使った方法でやってみます。

gimmickさんありがとうございましたっ!

ちなみに質問にはRecordSetって書いてありますけど、
ResultSetですね。間違えました。

お礼日時:2003/11/20 09:21

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