zoukankan      html  css  js  c++  java
  • jsp 分页(数据库读取数据)

    <%@ page contentType="text/html; charset=gb2312"%>
    <%@ page language="java"%>
    <%@ page import="java.sql.*"%>
    <%
    	//驱动程序名,比较旧了,如果你用mysql5,自己改。
    	String driverName = "org.gjt.mm.mysql.Driver";
    	String userName = "root";//数据库用户名
    	String userPasswd = "666666";//密码
    
    
    	String dbName = "search";//数据库名
    	String tableName = "organizations"; //表名
    	//连接字符串
    	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 = 30;
    	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 = statement.executeQuery("select count(*) from " + tableName);
    		rs.next();
    		RecordCount = rs.getInt(1);
    
    
    		rs = statement.executeQuery("SELECT serial,name,domain FROM " + tableName + " ORDER BY serial 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="1" 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="1" class="NormalTableTwo">
    			<tr>
    				<td class="InternalHeader">
    					序号
    				</td>
    				<td class="InternalHeader">
    					开办单位
    				</td>
    				<td class="InternalHeader">
    					登录地址
    				</td>
    			</tr>
    
    
    			<%
    				int i = 1;
    				while (rs.next()) {
    					int bil = i + (PageNo - 1) * PageSize;
    			%>
    			<tr>
    				<td class="NormalFieldTwo"><%=bil%></td>
    				<td class="NormalFieldTwo"><%=rs.getString(2)%></td>
    				<td class="NormalFieldTwo"><%=rs.getString(3)%></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=search.jsp?PageNo=1>第一页 </a>: ");
    								out.print("<a href=search.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=search.jsp?PageNo=" + c + ">" + c + "</a>");
    									} else {
    										out.print("<a href=search.jsp?PageNo=" + c + ">" + c + "</a> ,");
    									}
    								} else {
    									if (PageNo == MaxPage) {
    										out.print(c);
    										break;
    									} else {
    										out.print("<a href=search.jsp?PageNo=" + c + ">" + c + "</a>");
    										break;
    									}
    								}
    							}
    
    
    							out.print("]");
    							;
    
    
    							if (PageNo < MaxPage) { //如果当前页不是最后一页,则显示下一页链接
    								NextPage = PageNo + 1;
    								out.print("<a href=search.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=search.jsp?PageNo=" + MaxPage + ">最后一页</a>");
    							}
    							out.print("</font>");
    						%>
    					</div>
    				</td>
    			</tr>
    		</table>
    		<%
    			rs.close();
    			statement.close();
    			connection.close();
    		%>
    	</body>
    </html>



  • 相关阅读:
    【NOIP2015四校联训Day7】 题 题解(Tarjan缩点+DFS)
    【NOIP2013】火柴排队 题解(贪心+归并排序)
    【AHOI2009】中国象棋 题解(线性DP+数学)
    【HDU5869】 Different GCD Subarray Query 题解 (线段树维护区间GCD)
    【FZYZOJ】愚人节礼物 题解(状压DP)
    JavaSE 基础 第12节 基本算术运算符与模运算符
    JavaSE 基础 第11节 深入理解字符串
    JavaSE 基础 第09节 赋值与初始化
    JavaSE 基础 第08节 数据类型转换
    JavaSE 基础 第07节 变量和常量
  • 原文地址:https://www.cnblogs.com/riskyer/p/3268573.html
Copyright © 2011-2022 走看看