仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 638|回复: 12
打印 上一主题 下一主题

[学习教程] JAVA网页编程之贴一个偶写的分页类

[复制链接]
变相怪杰 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:27:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

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红,而开发出来的工具。
飘灵儿 该用户已被删除
沙发
发表于 2015-1-21 07:03:48 | 只看该作者
Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
兰色精灵 该用户已被删除
板凳
发表于 2015-1-24 12:52:45 | 只看该作者
象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。
只想知道 该用户已被删除
地板
发表于 2015-1-26 17:17:11 | 只看该作者
是一种使用者不需花费很多时间学习的语言
冷月葬花魂 该用户已被删除
5#
发表于 2015-2-2 21:59:00 | 只看该作者
J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。
柔情似水 该用户已被删除
6#
发表于 2015-2-8 08:25:57 | 只看该作者
Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
若天明 该用户已被删除
7#
发表于 2015-2-9 21:57:24 | 只看该作者
关于设计模式的资料,还是向大家推荐banq的网站 [url]http://www.jdon.com/[/url],他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。
灵魂腐蚀 该用户已被删除
8#
发表于 2015-2-17 04:43:34 | 只看该作者
至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。
因胸联盟 该用户已被删除
9#
发表于 2015-3-1 19:29:29 | 只看该作者
如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。
简单生活 该用户已被删除
10#
发表于 2015-3-10 22:30:46 | 只看该作者
你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。
谁可相欹 该用户已被删除
11#
发表于 2015-3-11 23:05:57 | 只看该作者
Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
再现理想 该用户已被删除
12#
发表于 2015-3-19 15:53:15 | 只看该作者
那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧!
小女巫 该用户已被删除
13#
发表于 2015-3-28 12:42:02 | 只看该作者
当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-15 20:12

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表