较快的JSP分页程序

在网上也看了很多了,后来在一个高人指点下,写了如下的分页程序,也请坛子里的其它高手指教:
<%!
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>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值