页面分页技术(一)-------------完全利用JSP进行分页

        今天看了看JSP的页面分页技术,顺便学习了一下,这次写的一个分页完全是JSP页面的,没有进行分层处理,纯JSP页面,对于理解分页是很有帮助的,数据库我采用的是mysql。在进行分页之前我们需要定义几个变量,这是进行分页的必备要素。首先我们要进行分页就必须要知道每页的大小所以我们定义了PageSize,我们在从数据库中取数据的时候需要定义从第几条开始取的变量StartRow,以及我们需要显示的页数也即PageNo,还要有一个每页的起始数据和结束数据值,CounterStart和CounterEnd。数据库中的总记录数RecordCount,还要有总页数MaxPage,以及前一页和下一页的记录数PreStart和NextPage。

        

<%@ page contentType="text/html; charset=gb2312" %>
<%@ page language="java" %>
<%@ page import="java.sql.*" %>
<%
//驱动程序名,比较旧了,如果你用mysql5,自己改。
String driverName="com.mysql.jdbc.Driver";
String userName="root";//数据库用户名
String userPasswd="lifeifei";//密码

String dbName="pagetest";//数据库名 
String tableName="page"; //表名

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


int PageSize = 3; //每页显示记录数
int StartRow = 0; //开始显示记录的编号
int PageNo=0;//需要显示的页数
int CounterStart=0;//每页页码的初始值
int CounterEnd=0;//显示页码的最大值
int RecordCount=0;//总记录数;
int MaxPage=0;//总页数
int PrevStart=0;//前一页
int NextPage=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 = statement.executeQuery("select count(*) from page" );
rs.next();
RecordCount = rs.getInt(1);

rs = statement.executeQuery("SELECT * FROM page ORDER BY id LIMIT "+StartRow+", "+PageSize);

//获取总页数
//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">id</td>
    <td class="InternalHeader" >name</td>
</tr>

<%
int i = 1;
while (rs.next()) {
%>
<tr>
    <td class="NormalFieldTwo" ><%=rs.getInt(1)%></td>
    <td class="NormalFieldTwo" ><%=rs.getString(2)%></td>
</tr>
<%
i++;
}%>
</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=TestPage.jsp?PageNo=1>第一页 </a>: ");
    out.print("<a href=TestPage.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=TestPage.jsp?PageNo="+c+">"+c+"</a>");
     }else{
        out.print("<a href=TestPage.jsp?PageNo="+c+">"+c+"</a> ,");
     }
   }else{
     if(PageNo == MaxPage){
      out.print(c);
      break;
     }else{
        out.print("<a href=TestPage.jsp?PageNo="+c+">"+c+"</a>");
     break;
   }
}
}

out.print("]");;

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

//同时如果当前页不是最后一页,要显示最后一页的链接
if(PageNo < MaxPage){

   out.print(":");
    out.print("<a href=TestPage.jsp?PageNo="+MaxPage+">最后一页</a>");
}
out.print("</font>");
%>
</div>
</td>
</tr>
</table>
<%
rs.close();
statement.close();
   connection.close();
%>
</body>
</html>
以上就是完整的分页代码。直接可运行。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值