欢迎光临
我们一直在努力

在struts中分页的一种实现-JSP教程,资料/其它

建站超值云服务器,限时71元/月

在struts中分页的一种实现

我的项目中的分页功能

1, 思路

使用一个页面控制类,它记录页面信息,如上页,下页,当前页等。在查询的action中,将这个控制类和查询条件一起传递给数据库访问bean,然后将这两个参数保存在用户session中。在分页控制action中,利用接收到的分页参数调用数据库访问的bean.

2,实现

(1)分页控制类

/* @author nick

* created on 2004-3-18

* file name:pagecontroller.java





*/

package com.tower.util;

/**

* @author nick

* 2004-3-18

* 用来进行翻页控制



*/

public class pagecontroller {

int totalrowsamount; //总行数

boolean rowsamountset; //是否设置过totalrowsamount

int pagesize=2; //每页行数

int currentpage=1; //当前页码

int nextpage;

int previouspage;

int totalpages; //总页数

boolean hasnext; //是否有下一页

boolean hasprevious; //是否有前一页

string description;

int pagestartrow;

int pageendrow;

public pagecontroller(int totalrows){

settotalrowsamount(totalrows);

}

public pagecontroller(){}

/**

* @param i

* 设定总行数

*/

public void settotalrowsamount(int i) {

if(!this.rowsamountset){

totalrowsamount = i;

totalpages=totalrowsamount/pagesize+1;

setcurrentpage(1);

this.rowsamountset=true;

}

}

/**

* @param i



* 当前页



*/

public void setcurrentpage(int i) {

currentpage = i;

nextpage=currentpage+1;

previouspage=currentpage-1;

//计算当前页开始行和结束行

if(currentpage*pagesize<totalrowsamount){

pageendrow=currentpage*pagesize;

pagestartrow=pageendrow-pagesize+1;

}else{

pageendrow=totalrowsamount;

pagestartrow=pagesize*(totalpages-1)+1;

}

//是否存在前页和后页

if (nextpage>totalpages){

hasnext=false;

}else{

hasnext=true;

}

if(previouspage==0){

hasprevious=false;

}else{

hasprevious=true;

};

system.out.println(this.description());

}

/**

* @return

*/

public int getcurrentpage() {

return currentpage;

}

/**

* @return

*/

public boolean ishasnext() {

return hasnext;

}

/**

* @return

*/

public boolean ishasprevious() {

return hasprevious;

}

/**

* @return

*/

public int getnextpage() {

return nextpage;

}

/**

* @return

*/

public int getpagesize() {

return pagesize;

}

/**

* @return

*/

public int getpreviouspage() {

return previouspage;

}

/**

* @return

*/

public int gettotalpages() {

return totalpages;

}

/**

* @return

*/

public int gettotalrowsamount() {

return totalrowsamount;

}

/**

* @param b

*/

public void sethasnext(boolean b) {

hasnext = b;

}

/**

* @param b

*/

public void sethasprevious(boolean b) {

hasprevious = b;

}

/**

* @param i

*/

public void setnextpage(int i) {

nextpage = i;

}

/**

* @param i

*/

public void setpagesize(int i) {

pagesize = i;

}

/**

* @param i

*/

public void setpreviouspage(int i) {

previouspage = i;

}

/**

* @param i

*/

public void settotalpages(int i) {

totalpages = i;

}

/**

* @return

*/

public int getpageendrow() {

return pageendrow;

}

/**

* @return

*/

public int getpagestartrow() {

return pagestartrow;

}

public string getdescription(){

string description="total:"+this.gettotalrowsamount()+

" items "+this.gettotalpages() +" pages";

// this.currentpage+" previous "+this.hasprevious +

// " next:"+this.hasnext+

// " start row:"+this.pagestartrow+

// " end row:"+this.pageendrow;

return description;

}

public string description(){

string description="total:"+this.gettotalrowsamount()+

" items "+this.gettotalpages() +" pages,current page:"+

this.currentpage+" previous "+this.hasprevious +

" next:"+this.hasnext+

" start row:"+this.pagestartrow+

" end row:"+this.pageendrow;

return description;

}

public static void main(string args[]){

pagecontroller pc=new pagecontroller(3);

system.out.println(pc.getdescription());

// pc.setcurrentpage(2);

// system.out.println(pc.description());

// pc.setcurrentpage(3);

// system.out.println(pc.description());

}

}

(2)查询action的代码片断

public actionforward execute(

actionmapping mapping,

actionform form,

httpservletrequest request,

httpservletresponse response)

throws exception {

base queryform= (base) form;

if(!queryform.getname().equals("")){

pagecontroller pc=new pagecontroller(); 

employeebase service=new employeebase(); 

arraylist result=(arraylist)service.search(queryform,pc);

httpsession session=request.getsession();

session.setattribute("queryform",queryform);

session.setattribute("pagecontroller",service.getpagecontroller());

request.setattribute("queryresult",result); 

request.setattribute("pagecontroller",service.getpagecontroller()); 

return mapping.findforward("haveresult");

}else{

return mapping.findforward("noresult");

}

}

(3),翻页action的代码片断

public actionforward execute(

actionmapping mapping,

actionform form,

httpservletrequest request,

httpservletresponse response)

throws exception {

//读取翻页参数

turnpageform turnpageform=(turnpageform)form;

//从pagecontroller中取出查询信息,并使用bean提供的调用接口处理结果

httpsession session=request.getsession();

pagecontroller pc=(pagecontroller)session.getattribute("pagecontroller"); 

base queryform=(base)session.getattribute("queryform");

pc.setcurrentpage(turnpageform.getviewpage());

employeebase service=new employeebase();

arraylist result=(arraylist)service.search(queryform,pc);

//根据参数将数据写入 request

request.removeattribute("queryresult");

request.removeattribute("pagecontroller");

request.setattribute("queryresult",result); 

request.setattribute("pagecontroller",pc);

//forward 到显示页面 

return mapping.findforward("haveresult");

}

(4)数据库访问bean中的片断

public collection search(base base, pagecontroller pc)

throws sqlexception {

arraylist emps = new arraylist();

resultset rs = getsearchresult(base);

rs.absolute(-1);

pc.settotalrowsamount(rs.getrow());

setpagecontroller(pc);

if (rs.getrow() > 0) {

rs.absolute(pc.getpagestartrow());

do {

system.out.println("in loop" + rs.getrow());

base b = new base();

b.setname(rs.getstring("name"));

b.setidcard(rs.getstring("idcard"));

system.out.println("from db:" + rs.getstring("idcard"));

emps.add(b);

if (!rs.next()) {

break;

}

} while (rs.getrow() < (pc.getpageendrow() + 1));

}

return emps;

}

(5)在jsp中,翻页部分的代码片断

<bean:write name="pagecontroller" property="description"/>

<logic:equal name="pagecontroller" property="hasprevious" value="true">

<a href="turnpage.do?viewpage=<bean:write name="pagecontroller" property="previouspage"/>" class="a02">

previous

</a>

</logic:equal>

<logic:equal name="pagecontroller" property="hasnext" value="true">

<a href="turnpage.do?viewpage=<bean:write name="pagecontroller" property="nextpage"/>" class="a02">

next

</a>

</logic:equal>

这样一来,翻页的功能可以以你喜欢的方式表现给client

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 在struts中分页的一种实现-JSP教程,资料/其它
分享到: 更多 (0)

相关推荐

  • 暂无文章