现在的位置: 首页 > 综合 > 正文

JSP+MYSQL分页技术

2018年01月27日 ⁄ 综合 ⁄ 共 6399字 ⁄ 字号 评论关闭

驱动JAR包:struts1.x  mysql

<%@ page contentType="text/html; charset=gb2312"%>  
<%@ page import="java.sql.*"%>  
<%   
String driverName = "com.mysql.jdbc.Driver";  
String userName = "root";//数据库用户名  
String userPasswd = "xxm";//密码  
String dbName = "student";//数据库名   
String tableName = "student"; //表名     
//连接字符串  
String url = "jdbc:mysql://127.0.0.1:3306/" + dbName+ "?user=" + userName + "&password=" + userPasswd;  
Class.forName(driverName).newInstance();  
Connection connection = DriverManager.getConnection(url);  
Statement statement = connection.createStatement();  
  
int EveryPageSize = 4;   //每页显示记录数
int FirstPage=0;   //起始页
int LastPage=0;    //最后一页
int CurrentPageNo = 0;  //当前页  
int CurrentPageStartNo = 0; //当前页的起始值  
int CurrentPageEndNo = 0; //当前页的结束值-----在次页面没有起到作用
int TotalRecords = 0;  //总记录数;  
int TotalPage = 0;   //总页数  
int PrePage = 0;   //上一页  
int NextPage = 0;   //下一页  

//获取总记录数  
ResultSet rs = statement.executeQuery("select count(*) from "+tableName);  
rs.next();  
TotalRecords = rs.getInt(1); 
//获取总页数  
if (TotalRecords % EveryPageSize == 0) {  
    TotalPage = TotalRecords / EveryPageSize;  
} else {  
    TotalPage = TotalRecords / EveryPageSize + 1;  

 
//获取需要显示的页数,由用户提交  
//如果为空,则默认表示第1页
if (request.getParameter("CurrentPageNo") == null) {
 //如果只有一页
 if(TotalRecords<=EveryPageSize){
   FirstPage=1;
   LastPage=1;
      CurrentPageNo = 1;
      CurrentPageStartNo=0;
      CurrentPageEndNo=TotalRecords-1;
      }else{
      //如果大于一页
       FirstPage=1;
       //如果刚好满页显示
       if(TotalRecords%EveryPageSize==0){
        LastPage=TotalRecords/EveryPageSize;
       }else{
        LastPage=TotalRecords/EveryPageSize+1;
       }
       CurrentPageNo = 1;
       CurrentPageStartNo=0;
       CurrentPageEndNo=EveryPageSize-1;
      }
} else {  
 //如果不为空,可能是第一页,也可能不是
    CurrentPageNo = Integer.parseInt(request.getParameter("CurrentPageNo")); //获得用户提交的页数
   
    if(CurrentPageNo==1){
     //如果只有一页
 if(TotalRecords<=EveryPageSize){
   FirstPage=1;
   LastPage=1;
      CurrentPageStartNo=0;
      CurrentPageEndNo=TotalRecords-1;
      }else{
      //如果大于一页
       FirstPage=1;
       //如果刚好满页显示
       if(TotalRecords%EveryPageSize==0){
        LastPage=TotalRecords/EveryPageSize;
       }else{
        LastPage=TotalRecords/EveryPageSize+1;
       }
       CurrentPageStartNo=0;
       CurrentPageEndNo=EveryPageSize-1;
      }
    }else{
       FirstPage=1;
       //如果刚好满页显示
       if(TotalRecords%EveryPageSize==0){
        LastPage=TotalRecords/EveryPageSize;
       }else{
        LastPage=TotalRecords/EveryPageSize+1;
       }
       
       CurrentPageStartNo=(CurrentPageNo-1)*EveryPageSize;
       CurrentPageEndNo=TotalRecords-(CurrentPageNo-1)*EveryPageSize;
      }
}  
%>

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

<body class="UsePageBg">  
<table width="100%" border="1" class="InternalHeader">  
 <tr>  
     <td  colspan="5" width="24%" align="center"><font size=4>分页显示记录</font></td>  
    </tr>
<tr>  
    <td class="InternalHeader">序号</td>  
    <td class="InternalHeader">学号</td>  
    <td class="InternalHeader">名字</td>  
    <td class="InternalHeader">性别</td>  
    <td class="InternalHeader">分数</td>  
</tr>  

<% 
 if(request.getParameter("first")!=null ){
  CurrentPageStartNo=0;
  EveryPageSize=1;
 }
 
 if(request.getParameter("last")!=null){
  CurrentPageStartNo=TotalRecords-1;
  System.out.println(CurrentPageStartNo);
 }
 
 String sql="SELECT * FROM "+tableName+" ORDER BY no DESC LIMIT " + CurrentPageStartNo + ", " + EveryPageSize;
 System.out.println(sql);
 rs = statement.executeQuery(sql);  
   
    int i = 1;  
    while (rs.next()) {  
      int order_ID = i + (CurrentPageNo - 1) * EveryPageSize;  
%>  
<tr>  
    <td class="NormalFieldTwo"><%=order_ID%></td>  
    <td class="NormalFieldTwo"><%=rs.getString(1)%></td>  
    <td class="NormalFieldTwo"><%=rs.getString(2)%></td>  
    <td class="NormalFieldTwo"><%=rs.getString(3)%></td>  
    <td class="NormalFieldTwo"><%=rs.getString(4)%></td>  
</tr>  
<%  
    i++;  
    }  
%>  
</table>  

<table width="100%" border="1" class="InternalHeader">  
<tr>  
    <td>  
    <div align="center">
   
    <%="总共" + TotalRecords + "条记录 - 当前页:" + CurrentPageNo + "/" + TotalPage%> 
    <%  
      out.print("<font size=4>");
       out.print("<a href=page1.jsp?CurrentPageNo=1&first=0>第一条 </a> "); 
      //显示第一页或者前一页的链接  
      //如果当前页不是第1页,则显示第一页和前一页的链接  
      if (CurrentPageNo != 1) {  
        PrePage = CurrentPageNo - 1;  
        out.print("<a href=page1.jsp?CurrentPageNo=1>第一页 </a> ");
        out.print(":");
        out.print("<a href=page1.jsp?CurrentPageNo=" + PrePage + ">前一页</a>");  
      }  
      out.print("[");  
     
      //打印需要显示的页码  
      for (int c = FirstPage; c <= LastPage; c++) {  
        
        if(c<TotalPage){
              out.print("<a href=page1.jsp?CurrentPageNo=" + c + ">" + c + "</a>"); 
              out.print(",");
            }else if(LastPage==TotalPage){
            out.print("<a href=page1.jsp?CurrentPageNo=" + c + ">" + c + "</a>");  
           }
      }  
      out.print("]");  
     
      if (CurrentPageNo < TotalPage) { //如果当前页不是最后一页,则显示下一页链接   ,最后一页的链接
        NextPage = CurrentPageNo + 1;  
        out.print("<a href=page1.jsp?CurrentPageNo=" + NextPage + ">下一页</a>");
        out.print(":");  
        out.print("<a href=page1.jsp?CurrentPageNo=" + TotalPage + ">最后一页</a>");  
      }  
       out.print("<a href=page1.jsp?CurrentPageNo=" + TotalPage + "&last="+(TotalRecords)+">最后一条</a>");   
      out.print("</font>");
    %>  
    </div>  
    </td>  
</tr>  
</table>  
<%  
rs.close();  
statement.close();  
connection.close();  
%>  
</body>  
</html>

______________________________________________________________________________________

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page import="java.sql.*" %>
<%
  Connection con = null;
  ResultSet rs = null;

  int PageSize = 10; //一页显示的记录数
  int RowCount; //记录总数
  int PageCount; //总页数
  int Page; //待显示页码
  int i, j;
  String strPage = request.getParameter("page");
  if (strPage == null) {
   //表明在QueryString中没有page这一个参数,此时显示第一页数据
   Page = 1;
  } else {
   //将字符串转换成整型
   Page = Integer.parseInt(strPage);
   if (Page < 1)
  Page = 1;
  }

  Class.forName("org.logicalcobwebs.proxool.ProxoolDriver");
  con = DriverManager.getConnection("proxool.game");

  String count = "select count(*) from cq_play ";
  PreparedStatement pstmt = con.prepareStatement(count);
  rs = pstmt.executeQuery();
  rs.next();
  RowCount = rs.getInt(1);
  PageCount = (RowCount + PageSize - 1) / PageSize; //记算总页数
  if (Page > PageCount)
   Page = PageCount; //调整待显示的页码

  String sql = "select * from cq_play ";
  pstmt = con.prepareStatement(sql);
  rs = pstmt.executeQuery();
  i = (Page - 1) * PageSize; //将记录指针定位到待显示页的第一条记录上
  for (j = 0; j < i; j++)
   rs.next();
   i = 0;

  while (i < PageSize && rs.next()) {
   i++;
  }
%>

<%if(Page>1){%>
<a href="page=<%=Page-1%>">上一页</a>
<%}%>
<%if(Page<PageCount){%>
<a href="page=<%=Page+1%>">下一页</a>
<%}%>

 

抱歉!评论已关闭.