關(guān)鍵代碼是MySQL下的一條命令:select * from 表名 limit 第幾頁(0開始),每頁的記錄數(shù);換句話說,只要改變第幾頁這個變量就能實(shí)現(xiàn)分頁的瀏覽了。
1。建立2個Bean,一個是負(fù)責(zé)數(shù)據(jù)庫連接,一個負(fù)責(zé)分頁。
package DBConn;
import java.sql.*;
import java.lang.*;
public class MySQLConnection {
private String DBDriver="com.mysql.jdbc.Driver";
private String ConnStr="jdbc:mysql://localhost:3306/zb?user=root&password=admin";
public MySQLConnection() throws java.lang.NullPointerException
{
try{
Class.forName(DBDriver);
}
catch(ClassNotFoundException e){
System.err.println(e.getMessage());
}
}
public String getConnStr()
{
return ConnStr;
}
}
package DBConn;
import java.sql.*;
import java.lang.*;
import DBConn.MySQLConnection.*;
public class PageBreak {
private String ConnStr="";
private Connection conn=null;
private ResultSet rs=null;
private int PageSize=0;//一頁幾個記錄
private int PageNumber=0;//頁號
public PageBreak() throws java.lang.NullPointerException
{
MySQLConnection DBConnection=new MySQLConnection();
ConnStr=DBConnection.getConnStr();//得到ConnStr
}
public ResultSet executeQuery(String sql) throws java.lang.NullPointerException
{
rs=null;
try{
conn=DriverManager.getConnection(ConnStr);
Statement stmt=conn.createStatement();
rs=stmt.executeQuery(sql);
}
catch(SQLException e){
System.err.println(e.getMessage());
}
return rs;
}
public int RecordNumber() throws java.lang.NullPointerException//得到表的記錄總數(shù)
{
rs=null;
int ColNumber=0;
try{
conn=DriverManager.getConnection(ConnStr);
Statement stmt=conn.createStatement();
rs=stmt.executeQuery("select count(*) as ColNumber from User" );
while (rs.next())
{
ColNumber=rs.getInt("ColNumber");
}
}
catch(SQLException e){
System.err.println(e.getMessage());
}
return ColNumber;
}
public void setPageSize(int pPageSize)//設(shè)置頁面大小,并且計算出一共有多少頁
{
this.PageSize=pPageSize;
int RecordNumber=this.RecordNumber();
this.PageNumber=(int)Math.floor(RecordNumber/PageSize);
}
public int getPageSize()//得到頁面大小
{
return this.PageSize;
}
public int getPageNumber()//得到頁面數(shù)
{
return this.PageNumber;
}
public void Close()//顯示關(guān)閉連接
{
try{
conn.close();
rs.close();
}
catch(SQLException e){
System.err.println(e.getMessage());
}
}
}
2。建立JSP頁面
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<jsp:useBean id="DBConnection" scope="page" class="DBConn.PageBreak"/>
<html>
<body>
<%
DBConnection.setPageSize(2);//設(shè)置頁面大小
int RecordPerPage=DBConnection.getPageSize();//得到頁面大小
int PageNumber=DBConnection.getPageNumber();//得到頁面數(shù)
int offSet=0;//Select 中的第幾頁,0開始
int Next=2;//連接“下一頁”的初始化
int Pre=1;//連接“上一頁”的初始化
int AbsolutePage=1;//絕對頁面,1開始。作為連接“下一頁”、“上一頁”的過渡變量
if(request.getParameter("PageNo")==null)//沒有參數(shù)傳入,則為物理的1頁,即0
offSet=0;
else if(request.getParameter("PageNo")!=null)
{
offSet=Integer.parseInt(request.getParameter("PageNo"))-1;//有參數(shù)傳入,參數(shù)為邏輯頁面號,減1得物理頁面號
if((offSet+1)>PageNumber)//達(dá)到最后一頁
{
offSet=PageNumber;
AbsolutePage=PageNumber+1;
Next=AbsolutePage;
Pre=Next-1;
}
else if(offSet<1)//達(dá)到第一頁
{
offSet=0;
AbsolutePage=offSet+1;
Next=AbsolutePage+1;
Pre=Next-1;
}
else
{
AbsolutePage=offSet+1;
Next=AbsolutePage+1;
Pre=AbsolutePage-1;
}
}
String QuerySQL="select * from user limit "+offSet*RecordPerPage+","+RecordPerPage;//關(guān)鍵代碼
ResultSet RS=DBConnection.executeQuery(QuerySQL);
while(RS.next())
{
String userName=RS.getString("UserName");
out.print(userName+"<br>");
}
out.print("<a href='test.jsp?PageNo="+(Next)+"'>next</a><br>");//下一頁
out.print("<a href='test.jsp?PageNo="+(Pre)+"'>previous</a>");//上一頁
RS.close();
DBConnection.Close();
%>
</body>
</html>