首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

分页有关问题.

2011-12-10 
分页问题............代码如下:importjava.util.*/****p Title:/p**p Description:/p**p Copyr

分页问题............
代码如下:

import   java.util.*;

/**
  *
  *   <p> Title:   </p>
  *
  *   <p> Description:   </p>
  *
  *   <p> Copyright:   Copyright   (c)   2006 </p>
  *
  *   <p> Company:   </p>
  *
  *   @author   Buger
  *   @version   1.0
  */
public   class   Pager   {
/**
  *   当前是第几页
  */
private   int   curPage;   //当前是第几页

/**
  *   一共有多少页
  */
private   int   maxPage;   //一共有多少页

/**
  *   一共有多少条记录(行)
  */
private   int   maxRowCount;   //一共有多少行

/**
  *   每页显示多少行
  */
private   int   rowsPerPage;   //每页显示多少行

/**
  *   当前页面要显示的数据列表(包含数据库返回对象的列表)
  */
private   List   list;   //当前页面显示的数据

/**
  *   提交的表单的名称
  */
private   String   formName   =   "pageForm ";//提交的表单名称

/**
  *   显示分页的前台页面路径名称
  */
private   String   target   =   " ";

/**
  *   默认每页显示记录数
  */
private   static   int   ROWS_PER_PAGE   =   17;
/**
  *   最后一页记录的条数(gzaqq)
  */
private   static   int   rowNum=0;
/**
  *   分页信息初始化,每页显示记录数使用默认值
  *
  */
public   Pager()   {
        this.curPage   =   1;
        this.maxPage   =   1;
        this.maxRowCount   =   0;
        this.rowsPerPage   =   ROWS_PER_PAGE;
}
/**
  *   搜索关键字
  */
private   String   keys;

/**
  *   扩展栏目类别
  */
private   int   itid;

/**
  *   <p>
  *   设置当前分页页面要显示的数据对象列表
  *   </p>
  *
  *   <p>
  *   该对象可以是一个实现了   List   接口的任意列表
  *   </p>
  *
  *   @param   list   -
  *                         实现了   List   接口的任意列表
  */
public   void   setList(List   list)   {
        this.list   =   list;
}

/**
  *   获取要在当前分页页面显示的数据对象列表
  *
  *   @return   要显示在前台页面的数据对象列表
  */
public   List   getList()   {
        return   this.list;
}

/**
  *   设置记录的总行数(即所有满足条件的纪录总数)
  *
  *   @param   maxRowCount   -
  *                         记录的总行数
  */
public   void   setMaxRowCount(int   maxRowCount)   {
        this.maxRowCount   =   maxRowCount;
}

/**
  *   获取记录的最大行数
  *
  *   @return   -   满足条件的所有记录条数
  */
public   int   getMaxRowCount()   {


        return   this.maxRowCount;
}

/**
  *   设置当前页数(即要显示在前台的当前页数)
  *
  *   @param   curPage   -
  *                         当前页数
  */
public   void   setCurPage(int   curPage)   {
        this.curPage   =   curPage;
}

/**
  *   返回在前台显示的当前页数
  *
  *   @return   -   当前页数
  */
public   int   getCurPage()   {
        return   this.curPage;
}

/**
  *   <p>
  *   设置每页显示的记录条数
  *   </p>
  *   <p>
  *   注意:如果每页显示的记录条数小于等于   0   ,则每页显示的记录条数将置为默认值
  *   </p>
  *
  *   @param   rows   -
  *                         每页显示的记录条数
  */
public   void   setRowsPerPage(int   rows)   {
        if   (rows   >   0)   {
                this.rowsPerPage   =   rows;
        }   else   {
                this.rowsPerPage   =   ROWS_PER_PAGE;
        }
}

/**
  *   设置页面提交表单的名称,默认为   pageForm,在一般情况下,使用默认值就能正常使用
  *
  *   @param   formName   -
  *                         提交表单的名称
  */
public   void   setFormName(String   formName)   {
        this.formName   =   formName;
}

/**
  *   设置显示分页的前台页面路径名称
  *
  *   @param   target   -
  *                         分页页面路径名称
  */
public   void   setTarget(String   target)   {
        this.target   =   target;
}

        public   void   setKeys(String   keys)   {
                this.keys   =   keys;
        }

        public   void   setItid(int   itid)   {
                this.itid   =   itid;
        }

        /**
  *   获取每页显示的记录条数
  *
  *   @return   -   每页显示的记录条数
  */
public   int   getRowsPerPage()   {
        return   this.rowsPerPage;
}
/**
  *   最后一页记录的条数(gzaqq)
  */
public     void   setRowNum(int   rowNum)
{
this.rowNum   =   rowNum;
}
public     int   getRowNum()
{
return   this.rowNum;
}
/**
  *   根据记录总数和每页显示的记录条数,计算总共有多少页
  *
  */
public   void   setMaxPage()   {
        if   (this.maxRowCount   %   this.rowsPerPage   ==   0)   {
                this.maxPage   =   this.maxRowCount   /   this.rowsPerPage;


        }   else   {
                this.maxPage   =   this.maxRowCount   /   this.rowsPerPage   +   1;
        }
}

/**
  *   获取根据记录总数和每页显示的记录数计算得出的总页数
  *
  *   @return   -   记录总页数
  */
public   int   getMaxPage()   {
        return   this.maxPage;
}

/**
  *   获取前台分页页面提交表单的名称
  *
  *   @return   -   提交表单的名称
  */
public   String   getFormName()   {
        return   this.formName;
}

/**
  *   获取前台分页页面的路径名称
  *
  *   @return   -   前台分页页面的路径名称
  */
public   String   getTarget()   {
        return   this.target;
}

        public   String   getKeys()   {
                return   keys;
        }

        public   int   getItid()   {
                return   itid;
        }

        /**
  *   获取默认每页显示的记录条数
  *


[解决办法]
刚也在看别人的分页,只能帮顶顶呐....
[解决办法]
那看看我的分页:


1,初始化一些必要参数:

<%//变量声明
Integer fid=new Integer(-1);
int intPageSize; //一页显示的记录数
int intRowCount; // 记录总数
int intPageCount; //总页数
int intPage; // 待显示页码
java.lang.String strPage;
int i;
//设置一页显示的记录数
intPageSize= 8;
//取得待显示页码
strPage = request.getParameter( "page ");
if(strPage==null){//表明在QueryString中没有page这一个参数,此时显示第一页数据
intPage = 1;
}
else{//将字符串转换成整型
intPage = java.lang.Integer.parseInt(strPage);
if(intPage
<1) intPage = 1;
}

2,此处获得可逆的数据集合:(可逆:不但数据集合可以向下循环,并且需要向上循环,此处代码实现就不多说了)

ToolKit toolKit=new ToolKit();//连接数据库的一些设置和一些控制数据库方法
Connection cn = toolKit.openConn();//打开数据库连接,调用打开连接的方法
String sql = "Select * From FTMEDB.SUBJECT_SEGMENT where USERID=? order by DATEID desc ";
PreparedStatement sqlStmt=cn.prepareStatement(sql,java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY);//这样写目的是为了获得可逆数据集合
sqlStmt.setString(1,(String)session.getAttribute( "id "));//通过使用封装好的PreparedStatement 类,添加条件。
ResultSet sqlRst = sqlStmt.executeQuery(); //执行SQL语句并获取结果集

3,开始获得一些分页所需要的数据,如:总页数,总记录数
if(sqlRst.next()){
sqlRst.last();//光标在最后一行
}
intRowCount = sqlRst.getRow();//获得当前行号,获取记录总数
intPageCount = (intRowCount+intPageSize-1) / intPageSize;//记算总页数
if(intPage> intPageCount) intPage = intPageCount;//调整待显示的页码
%>

4,判断一些条件,记录数大于0时操作

if( intPageCount> 0){
sqlRst.absolute((intPage-1) * intPageSize + 1);//将记录指针定位到待显示页的第一条记录上
//显示数据
int j=(intPage-1)*intPageSize+1; //获得在总记录中当前页第一条记录的记录行号,然后循环体中循环递加就可以得到当页每个记录的记录号
i = 0;
while(i <intPageSize && ! sqlRst.isAfterLast()){
//循环获得sqlRst集合的数据
sqlRst.next();
i++;
j++;
}
}
//关闭结果集
sqlRst.close();
//关闭SQL语句对象


sqlStmt.close();
//关闭数据库
cn.close();%>

5,实现页面显示页码数和当前页码数和记录总数:

<form method= "POST " name= "form1 " action= "km_clsjdmain.jsp?filialesId= <%=fid%> " onsubmit= "return validation(this) " > <DIV align=right>

<%=intPage%> 页 共
<%=intPageCount%> 页

<%if( intPage> 1){%>
<a href= "km_clsjdmain.jsp?page= <%=intPage-1%> "> 上一页 </a> //需要传过去上个页码
<%}%>
<%if( intPage
<intPageCount){%>
<a href= "km_clsjdmain.jsp?page= <%=intPage+1%> "> 下一页 </a> //需要传过去下个页码
<%}%>
转到第:
<input type= "text " name= "page " size= "8 "> 页
<span>
<input class=buttonface type= "submit " value= "GO " name= "cndok ">
</span>
</DIV> </form>

6,当选择填写5步中的text文本进行查询时需要用到下面js语句:

<script type= "text/javascript ">
<!---
function validation(frm){
var myRegExp =/^[0-9]*[1-9][0-9]*$/;
if(frm.page.value == ' ')
{
alert( "页数必须填写 ");
frm.page.focus();
return false;
}
if( !myRegExp.test(frm.page.value) )
{
alert( "页数只能为正整数 ");
frm.page.focus();
return false;
}
}
//--->
</script>

热点排行