欢迎光临
我们一直在努力

我终于理解了JSP 的分页了-JSP教程,Java技巧及代码

建站超值云服务器,限时71元/月

我们查询数据库的时候,如果查询出来的结果是很多条,比如1000条,那么,如果都显示到一个页面上简直是令人无法忍受的事情!所以我们要分页显示,每页显示10或20行,分页的目的就这样简单.

 

分页的方法有很多种,也许有些效率要高些,我这里只能参考最简单能实现的方法:现查询出有多少条记录,然后计算出一共分几页,然后分别显示每一页.

查询出有多少条记录:

select count(*)from learning

 

计算分多少页:

if(counts%pagesizes==0){pagecounts=counts/pagesizes;}

else{pagecounts=counts/pagesizes+1;}

int i=(intpage-1)*pagesizes;(书上的算法很笨,用我这里自己想的,没有错)

上面就是判断是否最后一页显示满,如, 93条记录,每页显示5条,那么最后一页要显示3条,一共19页显示!开始考虑的时候我考虑100页,哈哈,很特殊的,不具有代表性,看来思维的方法很重要,弱智吧?

 

然后就是分别显示这些页了,

string query=" select * "+

             " from learning "+

             " where article_id like % ";

这里我们遇到麻烦了,如何显示?是先查出5条放在哪里?一个什么样的数据结构里?还是划分数据库的记录的条数?也许从这里我们可以考虑出分页至少有2种方法:这里我们采用后一种,这种方法的内容是:rs的遍历和每页多少条记录的结合:

 

int i=(intpage-1)*pagesizes;//判断每一页能遍历到第几条记录

ps=conn.preparestatement(query);

resultset rs1=ps.executequery();

for( int  j=0; j<i ; j++)

rs1.next();//当是第一页的时候,rs从第0条开始,如果是第二页,从第(2-1)*5条元组开始遍历,如果第3页,将从第10条开始遍历

最后: while(rs1.next()&&i<pagesizes){ i++;}很关键,即控制了每页显示的条数,又控制了编历的范围.

最后有一个问题是: resultset rs1 为什么不用原先的rs?如果不理解这个,可以说没有理解到这种分页的做法,因为rs在查询记录总数的时候已经指向了第一个,如果继续使用,将从查询出来的第二条记录开始显示了!这个问题是我刚调试好分页时候出现的bug,看来都是先出现问题,再分析原因,再真正理解过程产生的原因.

 

下面还要在显示分页的内容之外加一个from , 里面提供链接来对当前页数的id+1(减1)来显示上一页或下一页的内容!

 

刚理解了分页,就马上记下来,加深印象,更不敢独享领悟后的喜悦!

以下是jsp 分页的代码:

 

 

*****************************

<%cookie cookies[]=request.getcookies();if(cookies==null){ response.sendredirect("login.jsp"); }%><%@ include file="articleconn.jsp"%><html>

<head><meta http-equiv="content-type" content="text/html; charset=big5"><title>管理文件</title><meta name="generator" content="microsoft frontpage 4.0"><!–link rel="stylesheet" href="css/article.css"–></head>

<%request.setcharacterencoding("big5");string query=" select * "+             " from learning "+             " where article_id like % ";string querycount=" select count(*)from learning ";string strpage=request.getparameter("strpage");int intpage;if(strpage==null){intpage=1;}elseintpage=integer.parseint(strpage);

int pagesizes=5;int counts=1;int pagecounts=1;

try{preparedstatement ps=conn.preparestatement(querycount);resultset rs=ps.executequery();if(rs.next()){counts=integer.parseint(rs.getstring(1));}

%><body bgcolor="#ffffff">  <p>&nbsp;</p>  <table width="700" border="1" cellspacing="0" cellpadding="0" align="center" bordercolorlight="#000000" bordercolordark="#ffffff">    <tr bgcolor="#99ccff">      <td height="10" bgcolor="#b5d85e">        <div align="center">          <b>管 理 界 面</b>        </div>      </td>    </tr>    <tr>      <td height="49">        <%– 分頁 –%>        <p align="left">          <a href="add.jsp">添加信息</a>           <a href="index.jsp">返回首頁</a>        </p>        <table border="1" cellspacing="0" width="90%" bgcolor="#f0f8ff" bordercolorlight="#000000" bordercolordark="#ffffff" align="center">          <tr>            <td width="12%" align="center">              <strong>id 號</strong>            </td>            <td width="13%" align="center">              <b>類 型</b>            </td>            <td width="47%" align="center">              <strong>信 息 名 稱</strong>            </td>            <td width="14%" align="center">              <strong>修 改</strong>            </td>            <td width="14%" align="center">              <strong>刪 除</strong>            </td>          </tr>          <% if(counts%pagesizes==0){pagecounts=counts/pagesizes;}else{pagecounts=counts/pagesizes+1;}int i=(intpage-1)*pagesizes;

ps=conn.preparestatement(query);resultset rs1=ps.executequery();for( int  j=0; j<i ; j++)rs1.next();out.println(rs+"<br><br><br> ");out.println(rs.next()); i=0;while(rs1.next()&&i<pagesizes){%>          <tr>            <td width="12%" height="7">              <p align="center">                <%= rs1.getstring("article_id")%>              </p>            </td>            <td width="13%" height="7">              <div align="center">                <%= rs1.getstring("types")%>              </div>            </td>            <td width="47%" height="7">              <%= rs1.getstring("title")%>            </td>            <td width="14%" align="center" height="7">              <a href="edit.jsp?id=<%=rs1.getstring("article_id")%>">修 改</a>            </td>            <td width="14%" align="center" height="7">              <a href="delete.jsp?id=<%=rs1.getstring("article_id")%>">刪 除</a>            </td>          </tr>          <% i++;}%>        </table>        <%

}catch(sqlexception se1){se1.printstacktrace();}finally{}

stmt.close(); conn.close(); %>      </td>    </tr>  </table><form action="manage.jsp" method="post" >第<%=intpage%>頁,共<%=pagecounts%>頁<%if(intpage<pagecounts)%><a href="manage.jsp?strpage=<%=intpage+1%>">下一頁</a><%if(intpage>1)%><a href="manage.jsp?strpage=<%=intpage-1%>">上一頁</a>

</form>

  <p>&nbsp;</p></body>

</html>

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 我终于理解了JSP 的分页了-JSP教程,Java技巧及代码
分享到: 更多 (0)