この例では、参照のページネーション効果を実現するために、サーブレットの特定のコードを共有しています。特定のコンテンツは次のとおりです
ページネーションアルゴリズム:
4つの変数を定義する必要があり、独自の用途があります
int Pagesize:ページごとに表示されるレコードの数
int pagenow:表示したいページ
int pagecount:合計でいくつのページがありますか
int rowcount:合計でいくつのレコードがありますか
説明:
Pagesizeが指定されています。Pagenowはユーザーの選択を指します。
RowCountはテーブルから取得されます。
PageCountが計算され、計算式は次のとおりです。
if(rowcount%pagesize == 0){pagecount = rowcount/pagesize; } else {pagecount = rowcount/pagesize+1; }ステートメントを使用する場合:テーブル名からフィールド名リストを選択します。そして ?
このSQLステートメントは確かに高速ですが、問題があります。つまり、テーブルのIDが削除されている場合、特定のページに1つのレコードが欠落している場合があります。
したがって、最終的な方法は次のステートメントです。
テーブル名からトップページサイズのフィールド名リストを選択しません(id in in)
実装コードは次のとおりです。
javax.servlet.http。*をインポートします。 java.io.*をインポートします。 Java.sql。*をインポートします。パブリッククラスのfenyeはhttpservletを拡張します{public void doget(httpservletrequest req、httpservletresponse res){connection ct = null; represedStatement PS = null;結果rs = null; int pagesize = 3; //各ページint pagenow = 1にレコードの数が表示されることを願っています。 //現在のページを最初のページに初期化しますint pagecount = 0; //ページの総数、計算rowcount = 0を通じてintを知る必要があります。 //総数を記録し、テーブルを検索して弦楽器spageNow = req.getParameter( "pagenow")を見つけます。 //渡された現在のページを受信します(spagenow!= null)//非ヌル値が受信された場合、整数{pagenow = integer.parseint(spagenow); } try {printwriter pw = res.getWriter(); class.forname( "com.microsoft.sqlserver.jdbc.sqlserverdriver"); ct = drivermanager.getConnection( "jdbc:sqlserver://127.0.0.1:1433; databasename = sustent"、 "sa"、 "password"); ps = ct.preparestatement( "[学生]。[dbo]。[学生]")from [*)from select count(*) "); //表のレコードの総数を取得rs = ps.executequery(); while(rs.next()){rowcount = rs.getint(1); //テーブル内のレコードの総数を取得} if(rowcount%pagesize == 0)//ページの総数を計算{pagecount = rowcount/pagesize; } else {pagecount = rowcount/pagesize+1; } ps = ct.preparestatement( "select top"+pagesize+" * from [dus ostent]。[dbo]。 rs = ps.executequery(); pw.println( "<body> <center>"); //クエリの結果を表示して、テーブルpw.println( "<table border = 1"); pw.println( "<tr> <th> id </th> <th> name </th> <th> grade </th> </tr>"); while(rs.next()){pw.println( "<tr>"); pw.println( "<td>"+rs.getint(1)+"</td>"); pw.println( "<td>"+rs.getString(2)+"</td>"); pw.println( "<td>"+rs.getString(3)+"</td>"); pw.println( "</tr>"); } pw.println( "</table>"); (pagenow == 1)//前のページのハイパーリンクの場合、最初のページに既にジャンプしている場合、ページは{pw.println( "<a href = fenye?pagenow ="+pagenow+">"+"+"+"+"+"+" </a> "); } else //最初のページにジャンプしない場合、ハイパーリンクがクリックされるたびに、ページは前方にジャンプします{pw.println( "<a href = fenye?pagenow ="+(pagenow-1)+">"+"forward"+"</a>"); } if(pagecount <= 5)//ハイパーリンクの数に表示されるページの数を制御{for(int i = 1; i <= pagecount; i ++){pw.println( "<a href = fenye?pagenow ="+i+">"+i+"</a>"); }} else if(pagecount-pagenow <= 5){for(int i = pagenow; i <= pagecount; i ++)pw.println( "<a href = fenye?pagenow ="+i+">"+i+"</a>"); } else //ページが多すぎる場合、美しいページでは、表示されたハイパーリンクの数を制御する必要があります{for(int i = pagenow; i <= pagenow+5; i ++)pw.println( "<a href = fenye?pagenow ="+i+"> } if(pagenow == pagecount)//既に最後のページである場合、次のページをクリックするとジャンプしなくなります{pw.println( "<a href = fenye?pagenow ="+pagenow+">"+"backward"+"</a>"); } else {pw.println( "<a href = fenye?pagenow ="+(pagenow+1)+">"+"backward"+"</a>"); } pw.println( "</center> </body>"); } catch(Exception ex){ex.printstacktrace(); }} public void dopost(httpservletrequest req、httpservletresponse res){this.doget(req、res); }}実行結果:
ページごとに表示されるレコードの数が3の場合:
対応する接続をクリックしてジャンプします。
最後のページは次のように表示されます。
対応するコード:
if(pagecount <= 5){for(int i = 1; i <= pagecount; i ++){pw.println( "<a href = fenye?pagenow ="+i+">"+i+"</a>"); }}後方をクリックしてジャンプしなくなります。
プログラムがハイパーリンクの数をどの程度効果的に制御するかを示すために、ページごとに表示されるレコードの数を1に変更します。
最初のページには効果が表示されます。
対応するコード:
else {for(int i = pagenow; i <= pagenow+5; i ++)pw.println( "<a href = fenye?pagenow ="+i+">"+i+"</a>"); }現在のページ番号が徐々に増加しているときのディスプレイ効果:
対応するコード:
else if(pagecount-pagenow <= 5){for(int i = pagenow; i <= pagecount; i ++)pw.println( "<a href = fenye?pagenow ="+i+">"+i+"</a>"); }上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。