jsp中的分页问题

2022-04-07 教育 84阅读
纯JSP分页代码
这是从一个PHP分页代码改的,没有异常处理,也没有利用java面向对象的特点,仅能帮助了解分页的逻辑和页码处理,供参考。源码中带有mysql中的数据库,方便调试,请下载。
下面是TestPage.jsp

<%@pagecontenttype>
<%@pagelanguage>
<%@pageimport>
<%>//驱动程序名,比较旧了,如果你用mysql5,自己改。
StringdriverName="org.gjt.mm.mysql.Driver";
StringuserName="root";//数据库用户名
StringuserPasswd="";//密码

StringdbName="bookstore";//数据库名
StringtableName="items";//表名

//连接字符串
Stringurl="jdbc:mysql://localhost/"+dbName+"?user="+userName+"&password="+userPasswd;
Class.forName(driverName).newInstance();
Connectionconnection=DriverManager.getConnection(url);
Statementstatement=connection.createStatement();

//每页显示记录数
intPageSize=8;
intStartRow=0;//开始显示记录的编号
intPageNo=0;//需要显示的页数
intCounterStart=0;//每页页码的初始值
intCounterEnd=0;//显示页码的最大值
intRecordCount=0;//总记录数;
intMaxPage=0;//总页数
intPrevStart=0;//前一页
intNextPage=0;//下一页
intLastRec=0;
intLastStartRecord=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);
%>



分页显示记录


<%>
//获取总记录数
ResultSetrs=statement.executeQuery("selectcount(*)fromitems");
rs.next();
RecordCount=rs.getInt(1);

rs=statement.executeQuery("SELECTimage_url,author,price,item_idFROMitemsORDERBYitem_idDESCLIMIT"
+StartRow+","+PageSize);

//获取总页数
MaxPage=RecordCount%PageSize;
if(RecordCount%PageSize==0){
MaxPage=RecordCount/PageSize;
}else{
MaxPage=RecordCount/PageSize+1;
}
%>



分页显示记录

<%>








记录序号
图像路径
作者
价格
图书编号


<%>inti=1;
while(rs.next()){
intbil=i+(PageNo-1)*PageSize;
%>

<%>
<%>
<%>
<%>
<%>

<%>i++;
}%>

>




<%>out.print("");
//显示第一页或者前一页的链接
//如果当前页不是第1页,则显示第一页和前一页的链接
if(PageNo!=1){
PrevStart=PageNo-1;
out.print("第一页:");
out.print("前一页");
}
out.print("[");

//打印需要显示的页码
for(intc=CounterStart;cif(cif(c==PageNo){
if(c%PageSize==0){
out.print(c);
}else{
out.print(c+",");
}
}elseif(c%PageSize==0){
out.print(""+c+"");
}else{
out.print(""+c+",");
}
}else{
if(PageNo==MaxPage){
out.print(c);
break;
}else{
out.print(""+c+"");
break;
}
}
}

out.print("]");;

if(PageNoNextPage=PageNo+1;
out.print("下一页");
}

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

out.print(":");
out.print("最后一页");
}
out.print("");
%>




<%>rs.close();
statement.close();
connection.close();
%>

声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com