都市供求信息网(10)

1.5.3 分页类

CreatePage类用来封装分页信息,这些信息都保存在CreatePage类的相应属性中。CreatePage类的属性如下:

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

private int CurrentP; //当前页码

private int AllP; //总页数

private int AllR; //总记录数

private int PerR; //每页显示的记录数

private String PageLink; //分页导航栏信息

private String PageInfo; //分页状态显示信息

在类的构造方法中为这些属性赋初始值。CreatePage类的构造方法如下:

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

public CreatePage(){

CurrentP=1; //设置当前页码为1

AllP=1; //设置总页数为1

AllR=0; //设置总记录数为0

PerR=3; //设置每页显示3条记录

PageLink="";

PageInfo="";

}

分页信息中的总记录数,需要通过查询数据库来获得,其实现可查看1.5.2节对OpDB类中的OpCreatePage()方法的介绍。CreatePage类中用来设置总记录数的方法如下:

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

/* 设置总记录数 */

public void setAllR(int AllR){

this.AllR=AllR;

}

总页数需要获得总记录数后与每页显示的记录数计算得到,其算法为:“总页数=(总记录数%每页显示记录==0)?(总记录数/每页显示记录):(总记录数/每页显示记录+1)”,所以要先设置总记录数,然后再来设置总页数。CreatePage类中用来设置总页数的方法如下:

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

/* 计算总页数 */

public void setAllP(){

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

}

在设置当前页码时,要判断由参数传递的当前页码是否有效,例如传递的值是否为数字形式、是否小于1、是否大于总页数等,对这些情况要进行相应的处理。CreatePage类中用来设置当前页码的方法如下:

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

/* 设置当前页码 */

public void setCurrentP(String currentP) {

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

currentP="1";

try{

CurrentP=Integer.parseInt(currentP);

}catch(NumberFormatException e){ //若参数传递的当前页码不是数字形式

CurrentP=1; //将当前页码设为1

e.printStackTrace();

}

if(CurrentP<1) //若当前页码小于1

CurrentP=1; //将当前页码赋值为1

if(CurrentP>AllP) //若当前页码大于总页数

CurrentP=AllP; //将当前页码赋值为总页数,即最后一页

}

在调用以上方法后,就可调用设置分页状态显示信息的方法来设置分页状态显示信息。该方法的代码如下:

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

/* 设置分页状态显示信息 */

public void setPageInfo(){

if(AllP>1){

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

PageInfo+="每页显示:"+PerR+"/"+AllR+" 条记录!";

PageInfo+="当前页:"+CurrentP+"/"+AllP+" 页!";

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

}

}

另外,还需要设置分页导航栏信息。在设置该信息时,需要判断总页数,若总页数大于1,则显示分页导航链接,否则不显示。CreatePage类中用来设置分页导航栏信息的方法如下:

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

/* 设置分页导航栏信息 */

public void setPageLink(String gowhich){

if(gowhich==null)

gowhich="";

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

gowhich+="&";

else

gowhich+="?";

if(AllP>1){ //如果总页数大于1页,生成分页导航链接

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

if(CurrentP>1){ //若当前页码大于1,则显示“首页”和“上一页”超链接

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

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

}

if(CurrentP<AllP){ //若当前页码小于总页数,则显示“下一页”和“尾页”超链接

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

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

}

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

}

}

读书导航