package com.wanbo;
import java.util.ArrayList;
import java.util.List;
public abstract class AbstractViewPage implements ViewPage {
//-----------------------------------------
//私有静态常量
//-----------------------------------------
private static final int DEFAULT_PAGE_INDEX = 1;
private static final int DEFALT_PAGE_COUNT = 1;
private static final int DEFAULT_PAGE_SIZE = -1;
private static final int DEFAULT_ROWS = 0;
//-----------------------------------------
//私有成员变量
//-----------------------------------------
/**当前页索引号**/
private int pageIndex = DEFAULT_PAGE_INDEX;
/**总页数**/
private int pageCount =DEFALT_PAGE_COUNT;
/**分页大小**/
private int pageSize = DEFAULT_PAGE_SIZE ;
/**数据总记录数**/
private int rows = DEFAULT_ROWS;
//------------------------------------------
//本地成员变量getter,setter方法
//------------------------------------------
/**
* 设置新页号,只有大于等于1而且小于等于总页数并且不为当前页时,才允许设置
* @param pageIndex The pageIndex to set.
*/
private void setPageIndex(int newPageIndex) {
if( newPageIndex >= this.DEFAULT_PAGE_INDEX && newPageIndex <= this.getPageCount() && newPageIndex != this.pageIndex) {
this.pageIndex = newPageIndex;
}
}
/**
* @return Returns the rows.
*/
private int getRows() {
return rows;
}
/**
* @param rows The rows to set.
*/
private void setRows(int rows) {
this.rows = rows;
}
/**
* @param pageCount The pageCount to set.
*/
private void setPageCount(int pageCount) {
this.pageCount = pageCount;
}
//--------------------------------------
//实现Page接口方法
//--------------------------------------
/**
* @see com.wanbo.ViewPage#getPageData()
*/
public List getPageData() {
List pageList =null;
//获得当前页数据
try {
pageList = this.pageList(this.getPageFirstRecord(), this.getPageRows());
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//保证不返回null
if(pageList == null) {
pageList =new ArrayList();
}
return pageList;
}
/**
* @see com.wanbo.ViewPage#getPageIndex()
*/
public int getPageIndex() {
return this.pageIndex;
}
/**
* @see com.wanbo.ViewPage#isFirstPage()
*/
public boolean isFirstPage() {
return this.DEFAULT_PAGE_INDEX ==this.pageIndex;
}
/**
* @see com.wanbo.ViewPage#isLastPage()
*/
public boolean isLastPage() {
//当前页索引为总页数时为最后一页
return this.pageIndex == this.pageCount;
}
/**
* @see com.wanbo.ViewPage#getHashNextPage()
*/
public boolean getHashNextPage() {
//当前页索引号小于总页数
return this.pageIndex < this.pageCount ;
}
/**
* @see com.wanbo.ViewPage#getHashPreviousPage()
*/
public boolean getHashPreviousPage() {
//当前页索引号大于默认的初始页号,这里为1
return this.pageIndex > this.DEFAULT_PAGE_INDEX ;
}
/**
* @see com.wanbo.ViewPage#getPageCount()
*/
public int getPageCount() {
return this.pageCount;
}
/**
* @see com.wanbo.ViewPage#getPageSize()
*/
public int getPageSize() {
return this.pageSize;
}
/**
* @see com.wanbo.ViewPage#getPageRows()
*/
public int getPageRows() {
//当页面大小为-1 时,返回总记录数
if(this.DEFAULT_PAGE_SIZE == this.pageSize ) {
return this.rows;
}
//不为最后一页时,返回pageSize
if(!this.isLastPage()) {
return this.pageSize;
}
//最后一页时
return this.rows - (this.pageSize * (this.pageCount -1));
}
/**
* @see com.wanbo.ViewPage#getPageFirstRecord()
*/
public int getPageFirstRecord() {
//页大小为-1 时
if(this.DEFAULT_PAGE_SIZE== this.pageSize ) {
return 0;
}
return (this.pageIndex -1)* this.pageSize;
}
/**
* @see com.wanbo.ViewPage#getPageLastRecord()
*/
public int getPageLastRecord() {
//页大小为-1时,返回总记录数
if(this.DEFAULT_PAGE_SIZE == this.pageSize) {
return this.rows;
}
return this.getPageFirstRecord() + this.getPageRows() ;
}
/**
* @see com.wanbo.ViewPage#gotoFirstPage()
*/
public void gotoFirstPage() {
this.gotoPage(this.DEFAULT_PAGE_INDEX);
}
/**
* @see com.wanbo.ViewPage#gotoLastPage()
*/
public void gotoLastPage() {
this.gotoPage(this.getPageCount());
}
/**
* @see com.wanbo.ViewPage#gotoPreviousPage()
*/
public void gotoPreviousPage() {
this.gotoPage(this.getPageIndex() -1);
}
/**
* @see com.wanbo.ViewPage#gotoNextPage()
*/
public void gotoNextPage() {
this.gotoPage(this.getPageIndex() + 1);
}
/**
* @see com.wanbo.ViewPage#gotoPage(int)
*/
public void gotoPage(int newPageIndex) {
if( newPageIndex >= this.DEFAULT_PAGE_INDEX && newPageIndex <= this.getPageCount() ) {
this.setPageIndex(newPageIndex);
}
}
/**
* @see com.wanbo.ViewPage#setPageSize(int)
*/
public void setPageSize(int size) {
if(size < 1) {
size = 1;
}
this.pageSize = size;
//进行初始化
this.doInit();
}
//-----------------------------------
//辅助方法
//-----------------------------------
/**
* 分页初始化方法,为了保证总是能正确的初始化,所以声明为final ,为了让子类可以调用声明为protected
*
*/
protected final void doInit() {
int rows = 0;
//获得总记录数
try {
rows= totalRows();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//设置总记录数
this.setRows(rows);
//设置新的总页数
//计算并设置总页数
int pages = calculatePageCount();
this.setPageCount(pages);
//转到第一页
this.gotoPage(this.DEFAULT_PAGE_INDEX);
onInit();
}
/**
* 记算总页数
* @return 总页数
*/
private int calculatePageCount() {
//总记录数为0条,则返回的总页数为1
if(this.getRows() == 0) {
return this.DEFALT_PAGE_COUNT;
}
//如果页面大小为-1,则返回的总页数为1
if(this.DEFAULT_PAGE_SIZE == this.getPageSize() ) {
return this.DEFALT_PAGE_COUNT;
}
return this.getRows() / this.getPageSize() + ( this.getRows() % this.getPageSize() ==0 ? 0 :1);
}
/**
* 获得总记录数,调用queryTotalRows(),将异常封装为non-checked 异常
* @return 总记录数
没有合适的资源?快使用搜索试试~ 我知道了~
用jsp+javabean+servlet实现的分页
共25个文件
class:7个
java:7个
jar:3个
4星 · 超过85%的资源 需积分: 13 26 下载量 55 浏览量
2011-03-10
09:07:14
上传
评论
收藏 1.01MB RAR 举报
温馨提示
用jsp+javabean+servlet实现的分页 数据库用的mysql
资源推荐
资源详情
资源评论
收起资源包目录
fenye.rar (25个子文件)
fenye
.project 1KB
.settings
org.eclipse.jdt.core.prefs 330B
.mymetadata 288B
WebRoot
test.jsp 359B
WEB-INF
web.xml 1KB
lib
jstl.jar 20KB
mysql-connector-java-5.1.7-bin.jar 693KB
standard.jar 384KB
classes
com
wanbo
User.class 934B
ViewPage.class 559B
ViewPageHelper.class 3KB
ViewPageImpl.class 2KB
ActionServlet.class 2KB
AbstractViewPage.class 4KB
ConnectServlet.class 2KB
index.jsp 3KB
META-INF
MANIFEST.MF 36B
.myeclipse
src
com
wanbo
ViewPage.java 2KB
AbstractViewPage.java 9KB
User.java 539B
ConnectServlet.java 1KB
ViewPageHelper.java 3KB
ViewPageImpl.java 2KB
ActionServlet.java 1KB
.classpath 593B
共 25 条
- 1
资源评论
- yxlooqq2013-06-17还可以 没出现什么错误
- 南溟之巅2013-10-21不会使用,能再详细点就好了
- hicuijunliang2014-08-17不会使用 可能我底子薄弱吧
- lxk199008242013-08-13好,用来实现分页很方便
lsghst
- 粉丝: 0
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功