正文

都市供求信息網(wǎng)(10)

JSP項(xiàng)目開發(fā)案例全程實(shí)錄(第2版) 作者:明日科技


1.5.3 分頁類

CreatePage類用來封裝分頁信息,這些信息都保存在CreatePage類的相應(yīng)屬性中。CreatePage類的屬性如下:

例程14 代碼位置:光盤\TM\01\src\com\yxq\model\CreatePage.java

private int CurrentP; //當(dāng)前頁碼

private int AllP; //總頁數(shù)

private int AllR; //總記錄數(shù)

private int PerR; //每頁顯示的記錄數(shù)

private String PageLink; //分頁導(dǎo)航欄信息

private String PageInfo; //分頁狀態(tài)顯示信息

在類的構(gòu)造方法中為這些屬性賦初始值。CreatePage類的構(gòu)造方法如下:

例程15 代碼位置:光盤\TM\01\src\com\yxq\model\CreatePage.java

public CreatePage(){

CurrentP=1; //設(shè)置當(dāng)前頁碼為1

AllP=1; //設(shè)置總頁數(shù)為1

AllR=0; //設(shè)置總記錄數(shù)為0

PerR=3; //設(shè)置每頁顯示3條記錄

PageLink="";

PageInfo="";

}

分頁信息中的總記錄數(shù),需要通過查詢數(shù)據(jù)庫來獲得,其實(shí)現(xiàn)可查看1.5.2節(jié)對(duì)OpDB類中的OpCreatePage()方法的介紹。CreatePage類中用來設(shè)置總記錄數(shù)的方法如下:

例程16 代碼位置:光盤\TM\01\src\com\yxq\model\CreatePage.java

/* 設(shè)置總記錄數(shù) */

public void setAllR(int AllR){

this.AllR=AllR;

}

總頁數(shù)需要獲得總記錄數(shù)后與每頁顯示的記錄數(shù)計(jì)算得到,其算法為:“總頁數(shù)=(總記錄數(shù)%每頁顯示記錄==0)?(總記錄數(shù)/每頁顯示記錄):(總記錄數(shù)/每頁顯示記錄+1)”,所以要先設(shè)置總記錄數(shù),然后再來設(shè)置總頁數(shù)。CreatePage類中用來設(shè)置總頁數(shù)的方法如下:

例程17 代碼位置:光盤\TM\01\src\com\yxq\model\CreatePage.java

/* 計(jì)算總頁數(shù) */

public void setAllP(){

AllP=(AllR%PerR==0)?(AllR/PerR):(AllR/PerR+1);

}

在設(shè)置當(dāng)前頁碼時(shí),要判斷由參數(shù)傳遞的當(dāng)前頁碼是否有效,例如傳遞的值是否為數(shù)字形式、是否小于1、是否大于總頁數(shù)等,對(duì)這些情況要進(jìn)行相應(yīng)的處理。CreatePage類中用來設(shè)置當(dāng)前頁碼的方法如下:

例程18 代碼位置:光盤\TM\01\src\com\yxq\model\CreatePage.java

/* 設(shè)置當(dāng)前頁碼 */

public void setCurrentP(String currentP) {

if(currentP==null||currentP.equals(""))

currentP="1";

try{

CurrentP=Integer.parseInt(currentP);

}catch(NumberFormatException e){ //若參數(shù)傳遞的當(dāng)前頁碼不是數(shù)字形式

CurrentP=1; //將當(dāng)前頁碼設(shè)為1

e.printStackTrace();

}

if(CurrentP<1) //若當(dāng)前頁碼小于1

CurrentP=1; //將當(dāng)前頁碼賦值為1

if(CurrentP>AllP) //若當(dāng)前頁碼大于總頁數(shù)

CurrentP=AllP; //將當(dāng)前頁碼賦值為總頁數(shù),即最后一頁

}

在調(diào)用以上方法后,就可調(diào)用設(shè)置分頁狀態(tài)顯示信息的方法來設(shè)置分頁狀態(tài)顯示信息。該方法的代碼如下:

例程19 代碼位置:光盤\TM\01\src\com\yxq\model\CreatePage.java

/* 設(shè)置分頁狀態(tài)顯示信息 */

public void setPageInfo(){

if(AllP>1){

PageInfo="<table border='0' cellpadding='3'><tr><td>";

PageInfo+="每頁顯示:"+PerR+"/"+AllR+" 條記錄!";

PageInfo+="當(dāng)前頁:"+CurrentP+"/"+AllP+" 頁!";

PageInfo+="</td></tr></table>";

}

}

另外,還需要設(shè)置分頁導(dǎo)航欄信息。在設(shè)置該信息時(shí),需要判斷總頁數(shù),若總頁數(shù)大于1,則顯示分頁導(dǎo)航鏈接,否則不顯示。CreatePage類中用來設(shè)置分頁導(dǎo)航欄信息的方法如下:

例程20 代碼位置:光盤\TM\01\src\com\yxq\model\CreatePage.java

/* 設(shè)置分頁導(dǎo)航欄信息 */

public void setPageLink(String gowhich){

if(gowhich==null)

gowhich="";

if(gowhich.indexOf("?")>=0)

gowhich+="&";

else

gowhich+="?";

if(AllP>1){ //如果總頁數(shù)大于1頁,生成分頁導(dǎo)航鏈接

PageLink="<table border='0' cellpadding='3'><tr><td>";

if(CurrentP>1){ //若當(dāng)前頁碼大于1,則顯示“首頁”和“上一頁”超鏈接

PageLink+="<a href='"+gowhich+"showpage=1'>首頁</a> ";

PageLink+="<a href='"+gowhich+"showpage="+(CurrentP-1)+"'>上一頁</a> ";

}

if(CurrentP<AllP){ //若當(dāng)前頁碼小于總頁數(shù),則顯示“下一頁”和“尾頁”超鏈接

PageLink+="<a href='"+gowhich+"showpage="+(CurrentP+1)+"'>下一頁</a> ";

PageLink+="<a href='"+gowhich+"showpage="+AllP+"'>尾頁</a>";

}

PageLink+="</td></tr></table>";

}

}


上一章目錄下一章

Copyright ? 讀書網(wǎng) leeflamesbasketballcamps.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號(hào) 鄂公網(wǎng)安備 42010302001612號(hào)