正文

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

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


1.5.3 分頁(yè)類

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

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

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

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

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

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

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

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

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

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

public CreatePage(){

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

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

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

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

PageLink="";

PageInfo="";

}

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

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

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

public void setAllR(int AllR){

this.AllR=AllR;

}

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

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

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

public void setAllP(){

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

}

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

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

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

public void setCurrentP(String currentP) {

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

currentP="1";

try{

CurrentP=Integer.parseInt(currentP);

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

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

e.printStackTrace();

}

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

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

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

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

}

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

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

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

public void setPageInfo(){

if(AllP>1){

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

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

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

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

}

}

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

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

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

public void setPageLink(String gowhich){

if(gowhich==null)

gowhich="";

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

gowhich+="&";

else

gowhich+="?";

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

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

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

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

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

}

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

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

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

}

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

}

}


上一章目錄下一章

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