较快的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

呵呵,请坛子里的高手指教!
阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭