jsp分页问题?

雷少爷爷 雷少爷爷 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
这是我从网上摘抄的jsp分页代码,问题是我 分页出来的确实显示全部记录,打个比方,我一个有10条记录,第一页
它就会显示10条记录,第二页还是显示一摸一样的10条记录,我很郁闷,代码如下!




<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />

<%@ page import="java.sql.*" %>
<%@ page import="java.lang.Integer" %>
<%@ page import="java.lang.Math" %>
<%@ page import="java.io.*" %>
<%@ page import="java.util.*" %>
<title>无标题文档</title>
</head>

<body>
<%
int i;
int ipage=5; //分页单位
int allpage; //总页数
int pages; //接受的页码变量
int cpage=1; //当前页
int spage; //开始页
int allCol=0;
Vector v=null;

//载入JDBC驱动程序
Driver myDriver=(Driver)Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();
//创建一个新连接
Connection myConn=DriverManager.getConnection("jdbc:odbc:first","","");
//创建一个Statement对象用来将查询和命令发送给数据库
Statement myStatement=myConn.createStatement();


//每页显示记录数
int PageSize = 5;
int StartRow = 0; //开始显示记录的编号
int PageNo=0;//需要显示的页数
int CounterStart=0;//每页页码的初始值
int CounterEnd=0;//显示页码的最大值
int RecordCount=0;//总记录数;
int MaxPage=0;//总页数
int PrevStart=0;//前一页
int NextPage=0;//下一页
int LastRec=0;
int LastStartRecord=0;//最后一页开始显示记录的编号

//获取需要显示的页数,由用户提交
if(request.getParameter("PageNo")==null){ //如果为空,则表示第1页
if(StartRow == 0){
PageNo = StartRow + 1; //设定为1
}
}else{
PageNo = Integer.parseInt(request.getParameter("PageNo")); //获得用户提交的页数
StartRow = (PageNo - 1) * PageSize; //获得开始显示的记录编号
}

//因为显示页码的数量是动态变化的,假如总共有一百页,则不可能同时显示100个链接。而是根据当前的页数显示
//一定数量的页面链接

//设置显示页码的初始值!!
if(PageNo % PageSize == 0){
CounterStart = PageNo - (PageSize - 1);
}else{
CounterStart = PageNo - (PageNo % PageSize) + 1;
}

CounterEnd = CounterStart + (PageSize - 1);
%>

<html>
<head>
<title>分页显示记录</title>
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<%

//获取总记录数
ResultSet rs = myStatement.executeQuery("select count(*) from product" );
rs.next();
RecordCount = rs.getInt(1);

rs = myStatement.executeQuery("SELECT name,context FROM product ORDER BY id DESC ");

//获取总页数
MaxPage = RecordCount % PageSize;
if(RecordCount % PageSize == 0){
MaxPage = RecordCount / PageSize;
}else{
MaxPage = RecordCount/PageSize+1;
}
%>
<body class="UsePageBg">
<table width="100%" border="0" class="InternalHeader">
<tr>
<td width="24%"><font size=4>分页显示记录</font></td>
<td width="76%">
<font size=4><%="总共"+RecordCount+"条记录 - 当前页:"+PageNo+"/"+MaxPage %></font>
</td>
</tr>
</table>

<br>
<table width="100%" border="0" class="NormalTableTwo">
<tr>
<td class="InternalHeader">记录序号</td>
<td class="InternalHeader" >图像路径</td>

</tr>

<%
int j = 1;
while (rs.next()) {
int bil = j + (PageNo-1)*PageSize;
%>
<tr>
<td class="NormalFieldTwo" ><%=bil %></td>
<td class="NormalFieldTwo" ><%=rs.getString(1)%></td>
<td class="NormalFieldTwo" ><%=rs.getString(2)%></td>

</tr>
<%
j++;
}%>
</table>
><br>
<table width="100%" border="0" class="InternalHeader">
<tr>
<td><div align="center">
<%
out.print("<font size=4>");
//显示第一页或者前一页的链接
//如果当前页不是第1页,则显示第一页和前一页的链接
if(PageNo != 1){
PrevStart = PageNo - 1;
out.print("<a href=3.jsp?PageNo=1>第一页 </a>: ");
out.print("<a href=3.jsp?PageNo="+PrevStart+">前一页</a>");
}
out.print("[");

//打印需要显示的页码
for(int c=CounterStart;c<=CounterEnd;c++){
if(c <MaxPage){
if(c == PageNo){
if(c %PageSize == 0){
out.print(c);
}else{
out.print(c+" ,");
}
}else if(c % PageSize == 0){
out.print("<a href=3.jsp?PageNo="+c+">"+c+"</a>");
}else{
out.print("<a href=3.jsp?PageNo="+c+">"+c+"</a> ,");
}
}else{
if(PageNo == MaxPage){
out.print(c);
break;
}else{
out.print("<a href=3.jsp?PageNo="+c+">"+c+"</a>");
break;
}
}
}

out.print("]");;

if(PageNo < MaxPage){ //如果当前页不是最后一页,则显示下一页链接
NextPage = PageNo + 1;
out.print("<a href=3.jsp?PageNo="+NextPage+">下一页</a>");
}

//同时如果当前页不是最后一页,要显示最后一页的链接
if(PageNo < MaxPage){
LastRec = RecordCount % PageSize;
if(LastRec == 0){
LastStartRecord = RecordCount - PageSize;
}
else{
LastStartRecord = RecordCount - LastRec;
}

out.print(":");
out.print("<a href=3.jsp?PageNo="+MaxPage+">最后一页</a>");
}
out.print("</font>");
%>
</div>
</td>
</tr>
</table>
<%
rs.close();
myStatement.close();
myConn.close();
%>
</body>
</html>

...全文
评论 15
收藏 已收藏
分享
返回顶部
雷少爷爷
Web 开发 81,108 成员 341,721 内容