关于jsp+mysql+tomcat数据表格分页的解决方案

<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<%
 //驱动程序名,比较旧了,如果你用mysql5,自己改。
 String driverName="com.mysql.jdbc.Driver";
 String userName="root";//数据库用户名
 String userPasswd="root";//密码
 String dbName="database";//数据库名

 String tableName="tables"; //表名

//连接字符串
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 =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;//最后一页开始显示记录的编号
String ss;
int s;
//获取需要显示的页数,由用户提交
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);
   CounterEnd = CounterStart +(PageSize);
   out.print("");
  }else{
   CounterStart = PageNo - (PageNo % PageSize) + 1;
   CounterEnd = CounterStart +(PageSize-1);
   out.print("");
  }
%>

<html>
<head>
<title>历史数据</title>
<link rel="stylesheet" href="style.css" type="text/css">
<style type="text/css">
<!--
.STYLE13 {font-family: "幼圆"}
.STYLE18 {font-size: 16px}
-->
</style>
<style type="text/css">
table {
	border:1px #C1DAD7solid;
	width:830px;
	border-collapse:collapse; 
	border-spacing:0;
	margin:auto
}
</style>

<style type="text/css">
body {
    font: normal 11px auto "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif;
    color: #4f6b72;
    background: #E6EAE9;
}
a {
    color: #c75f3e;
}

}
caption {
    padding: 0 0 5px 0;
    width: 700px;    
    font: italic 11px sans-serif;
    text-align: right;
}
th {
    font: bold 11px sans-serif;
    color: #4f6b72;
    border-right: 1px solid #C1DAD7;
    border-bottom: 1px solid #C1DAD7;
    border-top: 1px solid #C1DAD7;
    letter-spacing: 2px;
    text-transform: uppercase;
    text-align: center;
    padding: 6px 6px 6px 12px;
 
}
th.nobg {
    border-top: 0;
    border-left: 0;
    border-right: 1px solid #C1DAD7;
    background: none;
}
td {
    border-right: 1px solid #C1DAD7;
    border-bottom: 1px solid #C1DAD7;
    background: #fff;
    font-size:11px;
    padding: 6px 6px 6px 12px;
    color: #4f6b72;
}
td.alt {
    background: #F5FAFA;
    color: #797268;
}
th.spec {
    border-left: 1px solid #C1DAD7;
    border-top: 0;
    font: bold 10px sans-serif;
}
th.specalt {
    border-left: 1px solid #C1DAD7;
    border-top: 0;
    font: bold 10px sans-serif;
    color: #797268;
}
<html>
body td{ font-size:11px;}
</style>
<style >
#style1{
text-align: center;
            text-indent: 1em;
            letter-spacing: 0.5px;
            font: bold 15px "楷体";
            color:black
}
</style>
 </head>
<%

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

//rs = statement.executeQuery("SELECT usercode,username,password,comcode,flag_level,flag_status FROM zyd_user ORDER BY usercode DESC LIMIT "+StartRow+", "+PageSize);
rs = statement.executeQuery("SELECT date,Tem,PH, LT,DO,aeration_rate,dimness,pump1_state,pump2_state FROM tables ORDER BY date LIMIT "+StartRow+", "+PageSize);

//获取总页数
MaxPage = RecordCount % PageSize;
if(RecordCount % PageSize == 0){
  MaxPage = RecordCount / PageSize;
}else{
   MaxPage = RecordCount/PageSize+1;
}
%>
<body class="UsePageBg STYLE13 STYLE18">

<br>
<table >
<p id="style1">历史数据</p>
  <tr>
    <th>
				<%
					out.print("时间");
				%>
			</th>
			<th>
				<%
					out.print("温度");
				%>
			</th>
			<th>
				<%
					out.print("PH值");
				%>
			</th>
			<th>
				<%
					out.print("液位");
				%>
			</th>
			<th>
				<%
					out.print("DO");
				
				%>
			</th>
			<th>
				<%
					out.print("曝气量");
				%>
			</th>
			<th>
				<%
					out.print("浊度");
				%>
			</th>
			<th>
				<%
					out.print("气泵状态");
				%>
			</th>
			<th>
				<%
					out.print("水泵状态");
				%>
			</th>
	 </tr>

<%
int i = 1;
while (rs.next()) {
  int bil = i + (PageNo-1)*PageSize;
%>
 <tr>
    <td align="center" valign="middle" bordercolor="#000000" class="NormalFieldTwo" ><span class="STYLE13"><%=rs.getString(1)%></span></td>
    <td align="center" valign="middle" bordercolor="#000000" class="NormalFieldTwo" ><span class="STYLE13"><%=rs.getString(2)%></span></td>
    <td align="center" valign="middle" bordercolor="#000000" class="NormalFieldTwo" ><span class="STYLE13"><%=rs.getString(3)%></span></td>
    <td align="center" valign="middle" bordercolor="#000000" class="NormalFieldTwo" ><span class="STYLE13"><%=rs.getString(4)%></span></td>
    <td align="center" valign="middle" bordercolor="#000000" class="NormalFieldTwo" ><span class="STYLE13"><%=rs.getString(5)%></span></td>
    <td align="center" valign="middle" bordercolor="#000000" class="NormalFieldTwo" ><span class="STYLE13"><%=rs.getString(6)%></span></td>
    <td align="center" valign="middle" bordercolor="#000000" class="NormalFieldTwo" ><span class="STYLE13"><%=rs.getString(7)%></span></td>
    <td align="center" valign="middle" bordercolor="#000000" class="NormalFieldTwo" ><span class="STYLE13"><%=rs.getString(8)%></span></td>
    <td align="center" valign="middle" bordercolor="#000000" class="NormalFieldTwo" ><span class="STYLE13"><%=rs.getString(9)%></span></td>
  </tr>
<%
  i++;
}%>
</table>
<br>
<table >
  <tr>
   <td class="STYLE13"><div align="center">
<%
   out.print("<font size=4>");
  //显示第一页或者前一页的链接
  //如果当前页不是第1页,则显示第一页和前一页的链接
  if(PageNo != 1){
    PrevStart = PageNo - 1;
    out.print("<a href=index.jsp?PageNo=1>第一页 </a> ");
    out.print("<a href=index.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=index.jsp?PageNo="+""+c+">"+c+"</a>");
        out.print("");
     }else{
        out.print("<a href=index.jsp?PageNo="+c+">"+c+"</a> ");
        out.print("");
     }
   }else{
     if(PageNo == MaxPage){
      out.print(c);
      break;
     }else{
        out.print("<a href=index.jsp?PageNo="+ ""+c+">"+c+"</a>");
     break;
   }
  }
}

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

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

   out.print(" ");
   out.print(" ");
    out.print("<a href=index.jsp?PageNo="+MaxPage+">最后一页</a>");

  }
  out.print(" ");
  out.print(" ");
  out.print("总共"+RecordCount+"条记录  - 当前页:"+PageNo+"/"+MaxPage);
  out.print("</font>");
%>
</div></td>
</tr>
</table>
<span class="STYLE13">
<%
  rs.close();
  statement.close();
   connection.close();
%>
</span>
</body>
</html>


</style>


猜你喜欢

转载自blog.csdn.net/whitefox1986/article/details/50915158
今日推荐