/**
成都創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的新鄉(xiāng)網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
*?分頁代碼
*?
*?@author?Star
*?@version?1.0?2008/07/08
*/
public?class?CutPage?implements?Serializable{
private?static?Log?log?=?LogFactory.getLog(CutPage.class);
private?int?curPageNo?=?0;?//?當(dāng)前頁數(shù),從0開始
private?int?size?=?0;?//?所有數(shù)據(jù)條數(shù)
private?String?url;?//?頁面跳轉(zhuǎn)的路徑
private?List?showList;?//?當(dāng)前頁面需要顯示的數(shù)據(jù)列表
private?int?pageSize?=?20;//?每頁顯示的數(shù)據(jù)條數(shù)
private?int?groupSize?=?1;//?多少頁為一組
private?String?pageNavigation;//?導(dǎo)航條
/**
?*?每次通過sql語句從數(shù)據(jù)庫里面分組取出需要顯示的數(shù)據(jù)
?*?
?*?@param?request
?*????????????javax.servlet.http.HttpServletRequest對(duì)象
?*?@param?sql
?*????????????String?查詢數(shù)據(jù)庫的sql語句
?*?@param?pageSize
?*????????????int?每頁顯示的條數(shù)
?*?@param?groupSize
?*????????????int?分成多少組
?*?@param?url
?*????????????String?頁面跳轉(zhuǎn)的路徑,若沒有特殊的參數(shù)傳遞,可以傳入null或"",
?*????????????如是在aciton里面調(diào)用,并且action是繼承自DispatherAction的話最好傳入完整的路徑
?*/
public?void?init(HttpServletRequest?request,?String?sql,?int?pageSize,
int?groupSize,?int?pageNo,?String?url)?{
//?上一頁、下一頁跳轉(zhuǎn)路徑
if?(url?!=?null)?{
this.url?=?url;
}?else?{
this.url?=?request.getRequestURL()?+?"";
}
if?(pageSize??0)
this.pageSize?=?pageSize;//?每頁多少條記錄
if?(groupSize??0)
this.groupSize?=?groupSize;
//?當(dāng)前第幾頁
if?(pageNo??0)?{
this.curPageNo?=?0;
}?else?{
this.curPageNo?=?pageNo;
}
int?curGroup?=?this.curPageNo?/?this.groupSize?+?1;
//?是否是新的一組數(shù)據(jù),如果是則到數(shù)據(jù)庫取數(shù)據(jù)
this.size?=?parseInt(request.getSession().getAttribute("page_all_size")
+?"",?0);
if?(this.curPageNo?%?this.groupSize?==?0
||?(request.getSession().getAttribute("cur_group")?!=?null??parseInt(
""?+?request.getSession().getAttribute("cur_group"),?1)?!=?curGroup)
||?this.size?==?0?||?request.getParameter("reload")?!=?null)?{
request.getSession().setAttribute("cur_group",?curGroup);
if?(pageNo??0
?request.getSession().getAttribute("page_sql")?!=?null)?{
sql?=?request.getSession().getAttribute("page_sql")?+?"";
}?else?{
request.getSession().setAttribute("page_sql",?sql);
}
this.size?=?getTotalCount(sql);
List?list?=?getPageData(sql,?(this.curPageNo?/?this.groupSize)
*?this.pageSize?*?this.groupSize,?this.pageSize
*?this.groupSize);
request.getSession().setAttribute("page_all_size",?this.size);
request.getSession().setAttribute("page_cur_list",?list);
this.setShowList(list);//?設(shè)置頁面上的顯示數(shù)據(jù)
}?else?{
this.setShowList((List)?request.getSession().getAttribute(
"page_cur_list"));//?設(shè)置頁面上的顯示數(shù)據(jù)
}
}
/**
?*?每次通過sql語句從數(shù)據(jù)庫里面分組取出需要顯示的數(shù)據(jù)
?*?
?*?@param?request
?*????????????javax.servlet.http.HttpServletRequest對(duì)象
?*?@param?sql
?*????????????String?查詢數(shù)據(jù)庫的sql語句
?*?@param?pageSize
?*????????????int?每頁顯示的條數(shù)
?*?@param?groupSize
?*????????????int?分成多少組
?*?@param?url
?*????????????String?頁面跳轉(zhuǎn)的路徑,若沒有特殊的參數(shù)傳遞,可以傳入null或"",
?*????????????如是在aciton里面調(diào)用,并且action是繼承自DispatherAction的話最好傳入完整的路徑
?*/
public?void?init(HttpServletRequest?request,?String?sql,?int?pageSize,
int?groupSize,?String?url)?{
//?當(dāng)前第幾頁
String?curPage?=?request.getParameter("pageNo");
init(request,?sql,?pageSize,?groupSize,?parseInt(curPage,?-1),?url);
}
/**
?*?每次通過sql語句從數(shù)據(jù)庫里面分組取出需要顯示的數(shù)據(jù)
?*?
?*?@param?request
?*????????????javax.servlet.http.HttpServletRequest對(duì)象
?*?@param?sql
?*????????????String?查詢數(shù)據(jù)庫的sql語句
?*?@param?pageSize
?*????????????int?每頁顯示的條數(shù)
?*?@param?groupSize
?*????????????int?分成多少組
?*?@param?url
?*????????????String?頁面跳轉(zhuǎn)的路徑,若沒有特殊的參數(shù)傳遞,可以傳入null或"",
?*????????????如是在aciton里面調(diào)用,并且action是繼承自DispatherAction的話最好傳入完整的路徑
?*/
public?void?init(HttpServletRequest?request,?String?sql,?int?pageSize,
int?groupSize,?int?pageNo)?{
init(request,?sql,?pageSize,?groupSize,?pageNo,?"");
}
太多了,貼不下,見附件
head
%
const MaxPerPage=20
dim sql
dim rs
dim totalPut
dim CurrentPage
dim TotalPages
dim i,j
%
/head
body
%
conn = "DBQ=" + server.mappath("wj028.mdb") + ";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
sql = "SELECT * FROM USER order by id desc"
set rs=server.createobject("adodb.recordset")
rs.open SQL,conn,1,1
rs.MoveFirst
rs.pagesize=MaxPerPage
howmanyfields=rs.Fields.Count-1
If trim(Request("Page"))"" then
CurrentPage= CLng(request("Page"))
If CurrentPage rs.PageCount then
CurrentPage = rs.PageCount
End If
Else
CurrentPage= 1
End If
if rs.eof then
response.write "p align='center'沒有記錄!/p"
else
totalPut=rs.recordcount
if CurrentPage1 then
if (currentPage-1)*MaxPerPagetotalPut then
rs.move(currentPage-1)*MaxPerPage
dim bookmark
bookmark=rs.bookmark
end if
end if
dim n,k
if (totalPut mod MaxPerPage)=0 then
n= totalPut \ MaxPerPage
else
n= totalPut \ MaxPerPage + 1
end if%
% i=0
do while not rs.EOF and imaxperpage
%
%
rs.movenext
i=i+1
loop
%
第%=currentpage%頁
共%=n%頁
%
k=currentpage
if k1 then
response.write "[b"+"a href='list.asp?page=1'首頁/a/b]"
response.write "[b"+"a href='list.asp?page="+cstr(k-1)+"'上一頁/a/b]"
else
Response.Write "[首頁][上一頁]"
end if
if kn then
response.write "[b"+"a href='list.asp?page="+cstr(k+1)+"'下一頁/a/b] "
response.write "[b"+"a href='list.asp?page="+cstr(n)+"'尾頁/a/b] "
else
Response.Write "[下一頁][尾頁]"
end if
%
%
end if
set rs=nothing
set conn=nothing
%
/body
方法太多了.
如果是jdbc的話
分兩方面:1數(shù)據(jù)庫分頁
2代碼分頁
如果是框架持久層的話
一般持久層的查詢對(duì)象都要相關(guān)方法設(shè)置
比如設(shè)置一次取多少
從那條記錄開始取
還可以去引入一些外部分頁的jar包
----------------------------------------------
總體思想是這樣的:
首先肯定需要幾個(gè)參數(shù):請(qǐng)求的頁數(shù),一頁顯示多少條數(shù)據(jù).數(shù)據(jù)庫真實(shí)的條數(shù).
首先查出所有數(shù)據(jù)放入一個(gè)集合里面,當(dāng)然如果數(shù)據(jù)更新次數(shù)少竟然用緩存.
然后根據(jù)數(shù)據(jù)庫總條數(shù)與每頁顯示條數(shù)得到真正的頁數(shù).
根據(jù)一頁條數(shù)和請(qǐng)求的頁可以得到一個(gè)查詢的范圍。
this.sqlStr=sqlStr+"limit"+irows+","+pageSize;
這句是:sqlStr 是用來存放你的SQL語句的變量;整個(gè)的意思就是:
比如:sqlStr="select * from user";
this.sqlStr="select * from user limit 9,4
就是查詢表user 數(shù)據(jù)從第九行開始,向后查4行。每頁顯示4行數(shù)據(jù)。
String[] sData = new String[6]; 定義一個(gè)大小為6的字符串?dāng)?shù)組,
for(int j=0;jrsmd.getColumnCount();j++){*******************getColumnCount()什么意思有啥用????
sData[j]=rs.getString(j+1);
}
這句是循環(huán)遍歷,將數(shù)據(jù)庫的數(shù)據(jù)循環(huán)遍歷的賦給字符串?dāng)?shù)組。
親,希望我的回答對(duì)你有幫助。
//============分頁功能===============
int pageSize=3; //一頁顯示幾條記錄
int pageNow=1; //希望顯示第幾條記錄
//動(dòng)態(tài)的接收pageNow
String sPageNow=req.getParameter("pageNowok");
if(sPageNow!=null){
pageNow=Integer.parseInt(sPageNow);
}
//調(diào)用UserBeanC1
UserBeanC1 ubc = new UserBeanC1();
ArrayList al =ubc.getResultByPage(pageNow,pageSize);
pw.println("table border=2");
pw.println("trthid/ththname/ththpasswd/ththmail/ththgrade/thth修改用戶/thth刪除用戶/th/tr");
for(int i=0;ial.size();i++){
UserBean ub = (UserBean)al.get(i);
pw.println("tr");
pw.println("td"+ub.getUserId()+"/td");
pw.println("td"+ub.getUserName()+"/td");
pw.println("td"+ub.getPasswd()+"/td");
pw.println("td"+ub.getMail()+"/td");
pw.println("td"+ub.getGrade()+"/td");
pw.println("tda href=??修改/a/td");
pw.println("tda href=delUserC1?userId="+ub.getUserId()+" onclick=\"return window.confirm('確認(rèn)刪除嗎')\"刪除/a/td");
pw.println("/tr");
}
pw.println("/table");
//上一頁
if(pageNow!=1){
pw.println("a href=wel?pageNowok="+(pageNow-1)+"上一頁/a");
}
//顯示超鏈接
for(int i=pageNow;i=pageNow+pageSize+1;i++){
pw.println("a href=wel?pageNowok="+i+""+i+"/a");
}
int pageCount=ubc.getPageCount();
//下一頁
if(pageNow!=pageCount-4){
pw.println("a href=wel?pageNowok="+(pageNow+1)+"下一頁/abr");
}
pw.println("br該網(wǎng)頁被訪問了"+this.getServletContext().getAttribute("visitTimes").toString()+"次br");
pw.println("您的IP地址是:"+req.getRemoteAddr()+"br");
pw.println("您的機(jī)器名是:"+req.getRemoteHost()+"br");
pw.println("/centerhrimg src=imgs/1.gifbr");
pw.println("/body");
body
%! int pageSize=3; //每頁顯示的記錄數(shù)
int pageCount=0; //分頁后的總頁數(shù)
%
FORM action="bookfind1.jsp" method=get
輸入頁碼數(shù)Input Type="text" name="showPage" size="4"
Input Type="submit" value="提交"
/FORM
%
Connection con;
Statement sql;
try{
Class.forName("com.mysql.jdbc.Driver");
}
catch(ClassNotFoundException e){}
con=DriverManager.getConnection("jdbc:mysql://localhost:3306/tybook","root","123");
sql=con.createStatement();
Statement sql1 = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
//返回可滾動(dòng)的結(jié)果集:
ResultSet rs=sql1.executeQuery("SELECT * FROM books");
rs.last(); //將游標(biāo)移動(dòng)到最后一行
int lastRow=rs.getRow(); //獲取最后一行的行號(hào)
//計(jì)算分頁后的總頁數(shù)
pageCount=(lastRow%pageSize==0)?(lastRow/pageSize):(lastRow/pageSize+1);
int showPage=1; //當(dāng)前顯示的初始頁數(shù)
%
P 共有%=pageCount%頁
每頁顯示%=pageSize%條記錄.
%
String integer=request.getParameter("showPage");//獲取客戶輸入頁數(shù)
System.out.print(integer);
if(integer==null){
integer="1";
}
try {
showPage=Integer.parseInt(integer);
}
catch(NumberFormatException e){
showPage=1;
}
if(showPage=1){
showPage=1;
}
if(showPage=pageCount){
showPage=pageCount;
}
%
BR目前顯示第%=showPage%頁
%
//如果要顯示第showPage頁,那么計(jì)算游標(biāo)應(yīng)移到位置posion
int posion=(showPage-1)*pageSize+1;
rs.absolute(posion); // 設(shè)置游標(biāo)的位置
out.print("Table Border bgcolor='74bbc0'");
out.print("TR");
out.print("TH width=100"+"學(xué)號(hào)");
out.print("TH width=100"+"姓名");
out.print("TH width=50"+"學(xué)分");
out.print("/TR");
for (int i=1;i=pageSize;i++){
out.print("TR");
out.print("TD "+rs.getString(1)+"/TD");
out.print("TD "+rs.getString(2)+"/TD");
out.print("TD "+rs.getString(3)+"/TD");
out.print("/TR") ;
rs.next();
}
out.print("/Table");
con.close(); //關(guān)閉連接
%
/body