较快的JSP分页程序

    技术2022-05-11  70

    在网上也看了很多了,后来在一个高人指点下,写了如下的分页程序,也请坛子里的其它高手指教: <%! int intPageSize,intPageCount,intRowCount,intPage;//定义各种要用到的变量 String strPage,sql; %> <% //设置一页显示的记录数 intPageSize = 4; //取得待显示页码 strPage = request.getParameter("page" ; if(strPage==null){//表明在QueryString中没有page这一个参数,此时显示第一页数据 intPage = 1; } else{//将字符串转换成整型 intPage = java.lang.Integer.parseInt(strPage); if(intPage<1) intPage = 1; //如果已经到了第一页再按上一页的话,则到第0页,所以当小于1时,为1 } //读取记录 sql="DECLARE @rsc int/n"; sql+="SET @rsc=(select Count(id) from T_Duty)/n"; sql+="select top "+intPageSize+" @rsc[RC],id,Dtime,Dunit from T_Duty where id not in (select top "+((intPage-1)*intPageSize)+" id from T_Duty order by id desc) order by id desc"; ResultSet rs=stmt.executeQuery(sql); //获取记录总数 rs.next();//记录移后一行 intRowCount=rs.getInt("RC" ;//取得当前行的RC值 //计算总页数 intPageCount = (intRowCount+intPageSize-1) / intPageSize; //调整待显示的页码 if(intPage>intPageCount) intPage = intPageCount; %> <body> <table width="480" border="1" cellpadding="6" cellspacing="0" bordercolor="#CC6600"> <tr> <td>id</td> <td>time</td> <td>unit</td> </tr> <%      do      { %> <tr> <td><%= rs.getString("id" %></td> <td><%= rs.getString("Dtime" %></td> <td><%= rs.getString("Dunit" %></td> </tr> <%           } while(rs.next());           %> <tr> <td> </td> <td> </td> <td> </td> </tr> <% rs.close(); %> </table> <!--加入表单验证,输入的页数不能大于总页数和不能小于1 --> <script language="javascript"> function DateCheck(){ //取得输入的数据 page = document.form1.page.value; pageCount = document.form1.PageCount.value; //如果没有输入姓名 if ((page<0)||(page>pageCount))      {           alert("输入页码有误,请重新输入" ;           document.form1.page.focus();           return false;      } else      {      return true;           } } </script> <!--页面表单 --> <form d="form1" name="form1" method="POST" action="002.jsp" onSubmit="return DateCheck()"> 第<%=intPage%>页 共<%=intPageCount%>页 <%if(intPage<intPageCount){%><a href="002.jsp?page=<%=intPage+1%>">下一页 </a><%}%> <%if(intPage>1){%><a href="002.jsp?page=<%=intPage-1%>"> 上一页</a><%}%> 转到第:<input type="text" name="page" size="8"> 页 <span><input type="submit" value="GO" name="cndok"></span> <input name="PageCount" type="hidden" id="PageCount" value="<%= intPageCount %>" /> </form> 这里面很重要的就是那个sql语句: sql="DECLARE @rsc int/n"; sql+="SET @rsc=(select Count(id) from T_Duty)/n"; sql+="select top "+intPageSize+" @rsc[RC],id,Dtime,Dunit from T_Duty where id not in (select top "+((intPage-1)*intPageSize)+" id from T_Duty order by id desc) order by id desc"; 然后在后面写了个javascipt来限制提交的页数.自己试了试还可以, winXP SP2+tomcat 5.5.12+sqlserver 2000 呵呵,请坛子里的高手指教!

    最新回复(0)