|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
他们对jsp,servlet,javabean进行封装就是为了展示他们的某个思想,与java的开发并没有必然的关系,也不见得在所以情况下,别人使用起来会简单。分页笼统类
==========================================================
importjava.util.ArrayList;
importjava.sql.Connection;
importjava.sql.ResultSet;
importcom.xxx.util.DBTool;
/**
*<pre>
*分页类.默许页面巨细为20
*这是一个笼统类。子类必要重构办法selResult()
*</pre>
*/
publicabstractclassPageList{
/**以下成员变量在子类中可视*/
protectedfinalstaticintMIN_PAGE_SIZE=20;//默许页面巨细
protectedintpageSize;//页面巨细
protectedintcurPage;//以后页页码
protectedintprePage;//上一页页码
protectedintnxtPage;//下一页页码
protectedinttotalPage;//总页码数
protectedinttotalItem;//总条目数
protectedStringsql;//选择前提
protectedArrayListresult;//了局集
protectedintfrom;//入手下手的游标地位
/**公有变量*/
privatebooleanhasFindResult=false;//标记是不是已查找了却果
//包管loadResult只举行一次
/**
*机关器.默许页面巨细为20
*@paramsql
*@parampageNo
*/
publicPageList(Stringsql,intpageNo){
init(sql,MIN_PAGE_SIZE,pageNo);
}
/**
*机关器
*@paramsql前提SQL
*@parampageSize页面巨细
*@parampageNo页码
*/
publicPageList(Stringsql,intpageSize,intpageNo){
init(sql,pageSize,pageNo);
}
protectedvoidinit(Stringsql,intpageSize,intpageNo){
this.sql=sql;
this.pageSize=(pageSize<=0?MIN_PAGE_SIZE:pageSize);
this.curPage=(pageNo<=0?1:pageNo);
}
/**
*猎取页面巨细
*/
publicintgetPageSize(){
if(!this.hasFindResult){
this.loadResult();
}
returnthis.pageSize;
}
/**
*猎取以后页码
*/
publicintgetCurPage(){
if(!this.hasFindResult){
this.loadResult();
}
returnthis.curPage;
}
/**
*猎取前一页的页码
*/
publicintgetPrePage(){
if(!this.hasFindResult){
this.loadResult();
}
returnthis.prePage;
}
/**
*猎取后一页的页码
*/
publicintgetNxtPage(){
if(!this.hasFindResult){
this.loadResult();
}
returnthis.nxtPage;
}
/**
*猎取页码总数
*/
publicintgetTotalPage(){
if(!this.hasFindResult){
this.loadResult();
}
returnthis.totalPage;
}
/**
*猎取总条数
*/
publicintgetTotalItem(){
if(!this.hasFindResult){
this.loadResult();
}
returnthis.totalItem;
}
/**
*判别是不是有页面
*@return假如总页面数为0,那末前往false;不然true
*/
publicbooleanhasPages(){
if(!this.hasFindResult){
this.loadResult();
}
return(this.totalPage!=0);
}
/**
*猎取指定页面的了局集
*
*@return指定页面了局集;假如没有则前往空集
*/
publicArrayListgetResult(){
if(!this.hasFindResult){
this.loadResult();
}
returnthis.result;
}
/**
*选出了局
*/
protectedabstractArrayListselResult();
/**
*盘算页码信息而且失掉了局集.
*是calculatePageNoInfo和selResult的组合
*/
privatevoidloadResult(){
//1.盘算页码相干信息
this.calculatePageNoInfo();
//2.选出了局
this.result=this.selResult();
if(this.result==null){
this.result=newArrayList();
}
//3.包管loadResult()只举行一次
hasFindResult=true;
}
/**
*盘算页码相干信息calculate
*/
privatevoidcalculatePageNoInfo(){
//1.猎取总条目数目
this.totalItem=totalItem();
//2.盘算页码信息
//2.1总页数
if(this.totalItem==0){
this.totalPage=0;
}else{
this.totalPage=(this.totalItem-1)/this.pageSize+1;
}
//2.2以后页,前页,后页
if(this.totalPage==0){
this.curPage=0;
this.prePage=0;
this.nxtPage=0;
this.from=0;
}else{
this.curPage=(this.curPage>this.totalPage?this.totalPage:this.curPage);
this.prePage=((this.curPage-1<1)?1:(this.curPage-1));
this.nxtPage=((this.curPage==this.totalPage)?this.curPage:(this.curPage+1));
this.from=(this.curPage-1)*this.pageSize;
}
}
/**
*猎取总条目数目
*/
privateinttotalItem(){
//accessdb
intcount=0;
DBTooldb=newDBTool();
ResultSetrs=null;
db.connDB();
rs=db.advQuery(this.sql);
try{
while(rs.next()){
count++;
}
}catch(Exceptione){
}
db.closeDB();
returncount;
}
}
//~
利用
===========================================================
假定我有一个News实体对象,如今要机关一个News相干的分页类
以下:
importjava.sql.Connection;
importjava.sql.ResultSet;
importjava.sql.SQLException;
importcom.xxx.util.DBTool;
importcom.bokesoft.util.PageList;
importcom.bokesoft.util.DateUtil;
/**
*旧事分页类
*/
publicclassNewsPageListextendsPageList{
publicNewsPageList(Stringsql,intpageNo){
super(sql,pageNo);
}
publicNewsPageList(Stringsql,intpageSize,intpageNo){
super(sql,pageSize,pageNo);
}
protectedjava.util.ArrayListselResult(){
java.util.ArrayListresult=newjava.util.ArrayList(this.pageSize);
if(this.totalItem==0){
returnresult;
}
Newsnews=null;
DBTooldb=newDBTool();
ResultSetrs=null;
db.connDB();
rs=db.advQuery(this.sql);
if(rs!=null){
try{//一旦有非常被捕获就停止轮回
intcount=1;
if(this.curPage>1){
rs.absolute(this.from);//跳转到入手下手行
}
while(rs.next()&&count<=pageSize){
//轮回机关news对象,然后到场列表中
news=newNews();
news.setId(rs.getString("code")==null?"":rs.getString("code"));
......
result.add(news);
count++;
}
}catch(Exceptione){
}finally{
try{if(rs!=null)rs.close();}catch(SQLExceptionsqle){}
}
}
db.closeDB();
returnresult;
}
}
//~
客户程序的利用(jsp中)
========================================================
<%
//取得跳转的页码和显现条目数目和选择前提
//...
//intiPageNo
//intiPageSize
//StringsqlCond
//这里是详细利用分页类的部分,十分复杂
NewsPageListnpl=newNewsPageList(sqlCond,iPageSize,iPageNo);
java.util.ArrayListresultList=npl.getResult();
inttotalPage=npl.getTotalPage();
Newsnews=null;
intsize=resultList.size();
for(inti=0;i<size;i++){
news=(News)resultList.get(i);
//.....
}
%>
不得不提一下的是:.net是看到java红,而开发出来的工具。 |
|